我正在编写一个应该与Web应用程序通信的Android客户端(使用webapp2在appengine上运行)。客户端在服务器上发送POST请求,需要先进行身份验证。
应用程序将身份验证令牌存储为会话cookie。 这些cookie的价值有相同的标志。例如
Set-Cookie: auth=bsoq64sesba=als|sadasd|sdads
我在客户端使用HttpURLConnection。问题是如果cookie包含等号,则会被截断。因此,当发送下一个请求时,服务器会收到以下cookie:
auth=bsoq64sesba
当然没用。有没有办法正确接收带有值相等标志的cookie?
以下是发送请求的代码
/*The cookie store is initiated once, before the first request*/
CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);
/*Prepare the connection*/
URL url = new URL(address);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setDoOutput(true);
connection.setChunkedStreamingMode(0);
/*Write request body*/
OutputStream ostream = connection.getOutputStream();
ostream.write(postBody);
ostream.flush();
/*Read response*/
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String responseContents = "";
String line;
while ((line=reader.readLine())!=null) responseContents+=line;
return responseContents;
答案 0 :(得分:0)
在发送Cookie值之前,您需要对 = 进行编码,并在收到时对其进行解码。我建议用URL编码。您无法使用Base64编码,因为它在编码时使用 = 。
以下是link如何在Java中进行此操作。