5

我可以使用发送 POST 请求org.apache.http.clien.HttpClient并获取 HTTP 响应。但是登录时我没有得到 HTML 内容,因为我的 PHP 脚本需要一个 cookie。那么,如何读取 POST 请求响应的 cookie 并在 POST 请求之后使用 GET 请求将其发回?

    HttpClient httpClient = new DefaultHttpClient();

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("username", "user"));  
    nameValuePairs.add(new BasicNameValuePair("password", "passwd"));  

    HttpPost httpPost = new HttpPost("http://localhost/index.php");
    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

    HttpResponse httpResponse = httpClient.execute(httpPost);

    BufferedInputStream bis = new BufferedInputStream(httpResponse.getEntity().getContent()); // Just gets the HTML content, not the cookies
4

2 回答 2

9

cookie 是标准标头,因此您可以从

 httpResponse.getHeader("Cookie")

如果您从同一个应用程序调用服务器,则可以让 httpclient 保持 cookie 状态。不要每次都创建一个新实例,它应该可以工作。

于 2012-04-28T15:42:05.010 回答
3

如果您使用相同的 HTTPClient 实例并且您的服务器正在发送正确的标头,则应该自动处理它。

http://hc.apache.org/httpclient-3.x/cookies.html

于 2012-04-28T15:36:54.857 回答