Java 我的饼干不好吃';在安卓系统中,HttpsUrlConnection似乎没有被添加
我正在编写一个post方法,该方法需要将会话cookie附加到请求。我使用Java 我的饼干不好吃';在安卓系统中,HttpsUrlConnection似乎没有被添加,java,android,cookies,http-headers,Java,Android,Cookies,Http Headers,我正在编写一个post方法,该方法需要将会话cookie附加到请求。我使用HttpsUrlConnection类打开了一个安全的SSL连接。这个很好用。我通过调用connection.setRequestProperty(“cookie”,CookieData)向连接添加cookie。 不幸的是,我的服务器返回了一个500,我怀疑这与post请求中没有附加cookie或正确的cookie有关。之后,我使用setRequestProperty将cookie添加到连接中,我通过记录Log.I(标记
HttpsUrlConnection
类打开了一个安全的SSL连接。这个很好用。我通过调用connection.setRequestProperty(“cookie”,CookieData)
向连接添加cookie。
不幸的是,我的服务器返回了一个500,我怀疑这与post请求中没有附加cookie或正确的cookie有关。之后,我使用
setRequestProperty
将cookie添加到连接中,我通过记录Log.I(标记,“Post cookie header=“+connection.getHeaderField(“cookie”))检查连接现在是否有cookie
但返回null
。
问题-->我添加的cookie是否正确,如果正确,为什么
getHeaderField(“cookie”)
返回null
Post方法
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;
}
}
看起来不错
获取空值的原因是在连接之前无法查询标题
从URLConnection javadoc:
以下方法用于访问标题字段和
连接到远程对象后的内容:
- 获取内容
- 格海德菲尔德
- getInputStream
- getOutputStream
- 获取内容
- 格海德菲尔德
- getInputStream
- getOutputStream
您确定这就是您的服务器错误所在吗?HttpUrlConnection方法getErrorStream对于调试此类错误非常有用。我不能确定这是否是问题所在,因为我不是服务器管理员。errorStream没有帮助
服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序出错。
我认为您的setupConnection方法设置了connection.setDoOutput(true)?并且您正在设置服务器正在侦听的正确“Content Type”头?例如,connection.setRequestProperty(“Content_Type”,“application/x-www-form-urlencoded”);HttpUrlConnection方法getErrorStream对于调试此类错误非常有用。我不能确定这是否是问题所在,因为我不是服务器管理员。errorStream没有帮助服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序出错。
我认为您的setupConnection方法设置了connection.setDoOutput(true)?并且您正在设置服务器正在侦听的正确“Content Type”头?例如,connection.setRequestProperty(“Content_Type”,“application/x-www-form-urlencoded”);