【问题标题】:Android able to fetch google.com , but not any other webpageAndroid 能够获取 google.com ,但不能获取任何其他网页
【发布时间】:2016-02-14 00:34:38
【问题描述】:

我正在使用android-async-http 运行一个简单的推送通知示例。 该设备能够很好地接收通知。收到文件后,我正在使用上述库调用获取请求:

Log.d("TAG", "GOT");
        AsyncHttpClient client = new AsyncHttpClient();
        client.get("http://mysafeinfo.com/api/data?list=states&format=json", new AsyncHttpResponseHandler() {

            @Override
            public void onStart() {
                // called before request is started
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] response) {
                // called when response HTTP status is "200 OK"
                try {
                    String decoded = new String(response, "UTF-8");
                    Log.d("TAG", decoded);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
                // called when response HTTP status is "4XX" (eg. 401, 403, 404)

                try {
                    String dec = new String(errorResponse, "UTF-8");
                    Log.d("TAG",dec);
                }
                catch (UnsupportedEncodingException q){
                    q.printStackTrace();

                }
            }

            @Override
            public void onRetry(int retryNo) {
                // called when request is retried
            }
        });

在那个 url 中应该返回 json,但在我的日志中,我根本看不到任何消息。它都是空白的,永远不会调用 log.d。但是当我将该网址更改为 www.google.com 时,它会返回一些 html(这是 google 的主页)。 我已经添加了

<uses-permission android:name="android.permission.INTERNET" />

到清单。

这是我的日志:

02-13 21:06:12.189 12101-12101/com.example.harshvardhangupta.gcmpleasework D/TAG:得到 02-13 21:06:12.468 12101-12101/com.example.harshvardhangupta.gcmpleasework V/AsyncHttpRH: 从 1522 进步 1310 (86%) 02-13 21:06:12.468 12101-12101/com.example.harshvardhangupta.gcmpleasework V/AsyncHttpRH: 进度 3333 从 1522 (219%) 02-13 21:06:12.469 12101-12101/com.example.harshvardhangupta.gcmpleasework V/AsyncHttpRH: 从 1522 进步 5238 (344%)

请注意虚线。在@Taylor Courtney 发表评论后,我注意到响应即将到来,但它没有被正确地从字节数组转换为字符串

【问题讨论】:

    标签: android android-asynctask android-async-http


    【解决方案1】:

    好吧,您的 AsyncHttpClient (doc) 正在请求返回 JsonArray (response) 的链接。您应该改用 JsonHttpResponseHandler (doc)。

    AsyncHttpClient client = new AsyncHttpClient();
            client.get("http://mysafeinfo.com/api/data?list=states&format=json", new JsonHttpResponseHandler("UTF-8") {
                @Override
                public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
                    super.onSuccess(statusCode, headers, response);
                    Log.d(TAG, "onSuccess response: " + response.toString());
                    }
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2023-01-26
      相关资源
      最近更新 更多