【问题标题】:How to add cookie to url using HttpUrlConnection class in android?如何在 android 中使用 HttpUrlConnection 类将 cookie 添加到 url?
【发布时间】:2016-04-25 08:00:07
【问题描述】:

我正在尝试从 url 解析 json 数据,当我尝试创建连接时,它会抛出异常 java.net.ProtocolException:读取响应后无法写入请求正文

我收到的响应消息是Not found

我在网络浏览器中检查了 url,当我使用我的凭据登录时它显示了 Json 数据。

所以,我发现我需要将 cookie 添加到我的连接中,但我不知道该怎么做。

    public void parseData(String cookie){
    HttpUrlConnection connection;

    try{
    URL url = new URL(params[0]);
                    connection = (HttpURLConnection) url.openConnection();

                    connection.setRequestProperty("Cookie", cookie);
                    Log.e(TAG, "cookie " + cookie);

                    connection.setDoOutput(true);
                    connection.setDoInput(true);
                    connection.setRequestMethod("GET");

                    connection.connect();
Log.e(TAG,connection.getResponseMessage());

    /**
    here i'm trying to parse the data 
    using BufferedReader calss
    **/

    }
    catch(IOException e){}
    }

我需要在连接中添加 cookie。 请帮我解决这个问题。

【问题讨论】:

  • 我也尝试过。但我得到了一个异常“java.net.ProtocolException:在读取响应后无法写入请求正文”你能告诉我为什么它会抛出这个异常吗? @Mohammad Z
  • @Madhan:抱歉,因为我意识到我错了,所以删除了我的答案。

标签: android json cookies


【解决方案1】:

根据this link 你可以这样做:

必须在调用连接方法之前设置值:

URL myUrl = new URL("http://www.hccp.org/cookieTest.jsp"); 
URLConnection urlConn = myUrl.openConnection(); 

创建一个cookie字符串:

String myCookie = "userId=igbrown";

将 cookie 添加到请求中:使用 setRequestProperty(字符串名称,字符串值);方法,我们将添加一个 名为“Cookie”的属性,传递在 上一步作为属性值。

urlConn.setRequestProperty("Cookie", myCookie); 

将 cookie 发送到服务器:要发送 cookie,只需在 URLConnection 上调用 connect() 我们为其添加了 cookie 属性:

urlConn.connect()

【讨论】:

  • 实际上我和你的回答一样,但它抛出了我在问题中提到的异常,响应代码为 404 。
  • 如果你想添加超过 1 个 cookie,你可以用分号分隔它们,例如。 g.:String myCookie = "userId=igbrown;anyOther=345345";
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多