httpurlconnection中设置cookie的时机问题

来源:互联网 发布:剑三捏脸数据成男下载 编辑:程序博客网 时间:2024/05/21 07:48

http://blog.csdn.net/archer_zoro/article/details/42041883

遇到一个问题,先记录一下:

在用httpurlconnection进行post提交的时候,需要将之前得到的cookie带入,之前是这样写的,一直不成功:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <span style="white-space:pre">            </span>if (method == Method.GET) {  
  2.                 conn = (HttpURLConnection) new URL(url).openConnection();  
  3.                 conn.setRequestMethod("GET");  
  4.             } else if (method == Method.POST) {  
  5.                 conn.setRequestMethod("POST");  
  6.                 conn.setDoOutput(true);  
  7.                 conn.setDoInput(true);  
  8.                 conn.setUseCaches(false);  
  9.             }  
  10.             conn.setAllowUserInteraction(false);  
  11.             conn.setReadTimeout(requestOptions.readTimeout);  
  12.             conn.setConnectTimeout(requestOptions.connectTimeout);  
  13.             conn.addRequestProperty("Accept-Encoding""gzip, deflate");  
  14.   
  15.             /* add headers to the connection */  
  16.             for (final Map.Entry<String, List<String>> entry : headers.getHeaders().entrySet()) {  
  17.                 for (final String value : entry.getValue()) {  
  18.                     conn.addRequestProperty(entry.getKey(), value);  
  19.                 }  
  20.             }  
  21.               
  22.             String cookieStr = getCookies();  
  23.             DEBUG.i("===get cookie===" + cookieStr);  
  24.             if (null != cookieStr) {  
  25.                 conn.addRequestProperty("Cookie", cookieStr);  
  26.             }  
上面代码最后的是设置cookie的地方。

这样写,服务器一直都因为cookie的原因返回一个错误的东西。

然后从网上看到一篇文章,写到,设置cookie要在设置post之前,java httpurlconnection 发送cookie时,cookie要在Post前发送
但是他也没有讲原因,于是就照着改了一下,将设置cookie提到了前面:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <span style="white-space:pre">            </span>String cookieStr = getCookies();  
  2.             DEBUG.i("===get cookie===" + cookieStr);  
  3.             if (null != cookieStr) {  
  4.                 conn.addRequestProperty("Cookie", cookieStr);  
  5.             }  
  6.               
  7.             if (method == Method.GET) {  
  8.                 conn = (HttpURLConnection) new URL(url).openConnection();  
  9.                 conn.setRequestMethod("GET");  
  10.             } else if (method == Method.POST) {  
  11.                 conn.setRequestMethod("POST");  
  12.                 conn.setDoOutput(true);  
  13.                 conn.setDoInput(true);  
  14.                 conn.setUseCaches(false);  
  15.             }  
  16.             conn.setAllowUserInteraction(false);  
  17.             conn.setReadTimeout(requestOptions.readTimeout);  
  18.             conn.setConnectTimeout(requestOptions.connectTimeout);  
  19.             conn.addRequestProperty("Accept-Encoding""gzip, deflate");  
  20.   
  21.             /* add headers to the connection */  
  22.             for (final Map.Entry<String, List<String>> entry : headers.getHeaders().entrySet()) {  
  23.                 for (final String value : entry.getValue()) {  
  24.                     conn.addRequestProperty(entry.getKey(), value);  
  25.                 }  
  26.             }  

这样写了,post请求就ok了,原因还得探索。

另外,上面代码只是测试代码,没有考虑到get,所以还要稍加修改。

// TODO 需要找到这个原因



0 0
原创粉丝点击