5

を使用して POST 要求を送信しorg.apache.http.clien.HttpClient、HTTP 応答を取得できます。しかし、私の PHP スクリプトは Cookie を必要とするため、ログイン時に HTML コンテンツを取得できません。では、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 に答える