当前位置: 首页 > 知识库问答 >
问题:

Android-LoopJ AsyncHttpClient返回响应onFinish或onSuccess

颛孙霖
2023-03-14

我正在寻找一种方法来返回我在loopJ、AsyncHttpClient、onFinish或onSuccess或onfailure中得到的响应。到现在为止,我有这段代码:

**jsonParse.java file**
public class jsonParse {
    static JSONObject jObj = null;
    static String jsonString = "";
    AsyncHttpClient client;

      public JSONObject getJSONObj() {
            RequestParams params;
            params = new RequestParams();
            params.add("username", "user");
            params.add("password", "password");
            client = new AsyncHttpClient();
            client.post("http://example.com", params, new TextHttpResponseHandler() {

                @Override
                public void onSuccess(int i, Header[] headers, String response) {
                    jsonString = response;
                    Log.d("onSuccess: ", jsonString);
                }

                @Override
                public void onFailure(int statusCode, Header[] headers, String response, Throwable e) {
                    if (statusCode == 401) {
                        jsonString = response;
                        Log.d("onFailure: ", jsonString);
                    }
                }

            });
            try {
                jObj = new JSONObject(jsonString);
            } catch (JSONException e) {
                Log.e("Exception", "JSONException " + e.toString());
            }
            return jObj;
        }
}
JSONParser jsonParser = new JSONParser();
jsonParser.getJSONFromUrl(); 

我注意到,在第一次调用时:log.e(“exception”,“jsonexception”+e.toString());正在进行日志记录,然后是log.d(“onSuccess:”,jsonString);当它们处于同步状态时记录值。

在第二次调用中:jObj=new JSONObject(jsonString);gets成功执行,并且我获得了该方法所需的返回值,因为此时onSuccess方法已经将该值赋给了变量jsonString。

现在我正在寻找的正是一种防止方法过早返回jObj的方法。

提前道谢!干杯!

共有1个答案

董高朗
2023-03-14

使用接口。这样,您就可以创建自己的回调,其方法可以从onSuccess或onFailure中调用。

public interface OnJSONResponseCallback {
    public void onJSONResponse(boolean success, JSONObject response);
}

public JSONObject getJSONObj(OnJSONResponseCallback callback) {
    ...
   @Override
   public void onSuccess(int i, Header[] headers, String response) {
       try {
           jObj = new JSONObject(response);
           callback.onJSONResponse(true, jObj);
       } catch (JSONException e) {
           Log.e("Exception", "JSONException " + e.toString());
       }
   }

   @Override
   public void onFailure(int statusCode, Header[] headers, String response, Throwable e) {
       try {
           jObj = new JSONObject(response);
           callback.onJSONResponse(false, jObj);
       } catch (JSONException e) {
           Log.e("Exception", "JSONException " + e.toString());
       }
   }
}

并称之为:

jsonParse.getJSONObj(new OnJSONResponseCallback(){
    @Override
    public void onJSONResponse(boolean success, JSONObject response){
       //do something with the JSON
    }
});
 类似资料:
  • 问题内容: 我正在寻找一种方法来返回我在loopJ AsyncHttpClient onFinish或onSuccess或onFailure中得到的响应。截至目前,我有这段代码: 当我调用代码时: 在onSuccess或onFailure方法完成http发布之前,我得到了 JSONException 。 我注意到,在第一次调用时:Log.e(“ Exception”,“ JSONException

  • 本文向大家介绍symfony2 返回404响应,包括了symfony2 返回404响应的使用技巧和注意事项,需要的朋友参考一下 示例 当在服务器上找不到资源时,将返回404响应。在Symfony中,可以通过引发NotFoundHttpException异常来创建此状态。为了避免use在控制器内部添加多余的语句,请使用类createNotFoundException()提供的Controller  

  • 我想使用GooglePlaceAPI和自动完成视图。我有开发者控制台上的android和浏览器密钥。但当我尝试这些键API时,它返回空响应。 Logcat: D/Volley:[2651]a.a:请求的HTTP响应= 我的代码: 在onpostexecute日志中: 我是新来的google地方api,请帮我找到什么是错误的。

  • 有很多使用OkHTTP3发出请求的例子,但是,我仍然无法发出正确的请求。据我所知,我的设置是正确的。 我不断收到如下所示的回复。我不知道他们是什么意思。 {“ContentLength”:238,“ContentTypeString”:“Application/JSON”,“Source”:{“Buffer”:{“Size”:0},“Closed”:False,“Source”:{“BytesRe

  • 我想在Android应用程序发送包含 /api/Profile/Favorite的超文本传输协议请求时返回存根响应?value={"ID": 11821} 所以这是我的测试(使用WireMock框架) 但是当我开始测试方法测试发送请求浓缩咖啡时,我得到了正式服的生产响应。 这里请求来自Android设备: 这里回应: 正如你所看到的,我没有得到存根响应:{This_is_mock_response

  • 首先,我对非同步处理领域还很陌生。在我当前的项目中,我们使用SpringBoot和ProjectReactor,特别是Eventbus,来执行一些异步处理。我想使用eventbus也会使我们的系统更具可扩展性。 到目前为止,EventBus的使用还相当有限,我们在EventBus使用者中进行一些处理,而该使用者不返回任何内容。配置和示例处理器如下所示: //配置文件 //消费者 到目前为止,对于具