我的cookie似乎没有被添加到Android中的HttpsUrlConnection

时间:2015-11-29 20:02:28

标签: java android cookies http-headers

我正在编写一个需要将会话cookie附加到请求的post方法。我打开了与HttpsUrlConnection类的安全SSL连接。这很好用。我通过调用connection.setRequestProperty("Cookie", TheCookieData)为连接添加了一个cookie。

不幸的是我的服务器返回500,我怀疑与没有cookie或正确的cookie有关,附在邮件请求上。之后,我将cookie添加到与setRequestProperty的连接中。我通过记录Log.i(TAG, "Post cookie header = " + connection.getHeaderField("Cookie"));检查连接现在是否具有cookie但是返回null

问题 - >我是否正确添加了Cookie,如果是,为什么getHeaderField("Cookie")会返回null

后置方法

public static boolean post(Object message, Context context) {
    try {
        HttpsURLConnection connection = (HttpsURLConnection) setupConnection(HttpMethod.POST);
        connection.setSSLSocketFactory(getSslContext(context).getSocketFactory());

        if(TheCookieManager.getCookieStore().getCookies().size() > 0) {
            Log.i(TAG, "post found cookie " + TextUtils.join(";", TheCookieManager.getCookieStore().getCookies()));
            connection.setRequestProperty("Cookie",  TextUtils.join(";", TheCookieManager.getCookieStore().getCookies()));
        }

        JSONObject data = new JSONObject();
        data.put("msg", message);
        Log.i(TAG, "post data=" + data.toString());
        OutputStream os = connection.getOutputStream();
        os.write(data.toString().getBytes(UTF8));
        os.flush();

        Log.i(TAG, "Post cookie header = " + connection.getHeaderField("Cookie"));


        int code = connection.getResponseCode();

        connection.disconnect();

        Log.i(TAG, "post data fed to server!, data= " + data.toString());
        Log.i(TAG, "server responded with " + String.valueOf(code));

        return code != 200;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

看起来不错。

您获得null的原因是因为在连接之前无法查询标头。

来自URLConnection javadoc:

  

以下方法用于访问标题字段和   内容与远程对象建立连接后:

     
      
  • 的getContent
  •   
  • 的getHeaderField
  •   
  • 的getInputStream
  •   
  • 的getOutputStream
  •   

您确定这是您的服务器出错的地方吗?