OkHttpClient获得响应体

时间:2017-03-30 03:36:37

标签: java request response http-status-code-403 okhttp3

我想得到身体响应,但是获得错误403,尽管页面在webview和浏览器中打开。我的代码:

OkHttpClient client = new OkHttpClient();
                    Request request = new Request.Builder()
                            .url(url)
                            .build();

                    client.newCall(request).enqueue(new Callback()
                    {
                        @Override
                        public void onFailure(Call call, IOException e)
                        {
                            Log.e("Error load URL", e.toString());
                        }

                        @Override
                        public void onResponse(Call call, Response response) throws IOException
                        {
                            if (response.isSuccessful())
                            {
                                htmlPage = response.body().string();
                            }
                            else
                            {
                                //I find myself here.
                                Log.e("Error load URL", "Response error");
                            }
                        }
                    });
  

url =   “http://shop.lenovo.com/SEUILibrary/controller/e/web/LenovoPortal/en_US/cart.workflow:ShowCart?shopping-menu-selected-line=cart&menu-id=currentcart

来自服务器的响应:

  

响应{protocol = http / 1.1,代码= 403,消息=禁止,   URL = http://shop.lenovo.com/SEUILibrary/controller/e/web/LenovoPortal/en_US/cart.workflow:ShowCart?shopping-menu-selected-line=cart&menu-id=currentcart}

在浏览器中一切都很好。为什么呢?

2 个答案:

答案 0 :(得分:1)

确保您的客户已经授权或验证了Web服务。 如果在您调用的Web服务上启用了安全性,尝试对Web服务进行身份验证/授权,然后开始使用它,则会发生这种情况。

答案 1 :(得分:1)

扩展到Kiran,403表示授权问题。不是身份验证问题。很可能在浏览器身份验证和授权中使用cookie来管理,而cookie可能无法在您的代码中处理。