我正在编写一个需要将会话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;
}
}
答案 0 :(得分:0)
看起来不错。
您获得null的原因是因为在连接之前无法查询标头。
来自URLConnection javadoc:
以下方法用于访问标题字段和 内容与远程对象建立连接后:
- 的getContent
- 的getHeaderField
- 的getInputStream
- 的getOutputStream
您确定这是您的服务器出错的地方吗?