【问题标题】:android - GET-request with Loopjandroid - 使用 Loopj 获取请求
【发布时间】:2015-07-19 22:08:32
【问题描述】:

我需要向包含 JSON 数据的 url 发出 GET 请求并尝试使用 Loopj 库,但它什么也没返回。我试图在 Internet 上查找示例,但结果证明它们可能已过时(onSuccess 方法具有不同的参数)。我试图让我的代码适应那个例子和我得到的:

String AllData=""; AsyncHttpClient client = new AsyncHttpClient();
    client.get("wantedUrl", new AsyncHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
            for (byte aResponseBody : responseBody) {
                AllData += aResponseBody;
            }

        }
        @Override
        public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
            Toast.makeText(getApplicationContext(),"We got an error",Toast.LENGTH_SHORT).show();
        }
    });

"wantedUrl" 是带有 json 的 url,但 "AllData" 保持为空。如何解决?

【问题讨论】:

    标签: android json http get loopj


    【解决方案1】:

    您在需要JsonHttpResponseHandler 的地方收到AsyncHttpResponseHandler 回调。使用下面的代码让事情走上正轨。

     String AllData=""; AsyncHttpClient client = new AsyncHttpClient();
            client.get("wantedUrl", new JsonHttpResponseHandler(){
                @Override
                public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
                    super.onSuccess(statusCode, headers, response);
    
                    //Here response will be received in form of JSONArray
                }
    
                @Override
                public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                    super.onSuccess(statusCode, headers, response);
    
                    //Here response will be received in form of JSONObject
                }
    
                @Override
                public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                    super.onFailure(statusCode, headers, responseString, throwable);
                    Toast.makeText(getApplicationContext(), "We got an error", Toast.LENGTH_SHORT).show();
                }
            });
    

    【讨论】:

    • 可以,但是如何将响应记录到Activity类的变量中呢? (我将其声明为“公共静态”以在 onSuccess 方法中访问它,但在上述构造之外它具有其先前的值(但在 onSuccess 中一切正常 - 我用相同的 Toast 对其进行了测试)
    • @JustinMcGuire 您需要为此学习 JAVA 的基本概念。没有冒犯。
    • 我知道我是个新手,但无论如何我需要将响应数据记录到数组中以膨胀 ListView - 那么我可以用什么方法呢?
    • @JustinMcGuire 你不需要那样做,你在response 中已经有了所有 JSON ,试着准备一些好文章,你会很容易找到很多。
    • 我认为最后一个问题 - 我如何使用上面的第二个 onSuccess 方法从我从 URL 收到的 JSONArray 中获取 JSONObject,而不仅仅是“getJSONObject
    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多