2011-01-15 10 views
3

私はexecute(HttpPost post)メソッドでApacheのDefaultHttpClient()を使用してHTTP POSTを行います。 これで私はウェブサイトにログオンします。 次に、同じクライアントを使用してHttpGetを作成します。 しかし、私が行うとき、私は例外を取得:SingleClientConnManagerの不正使用::接続がまだ割り当てられたスレッド「メイン」java.lang.IllegalStateExceptionにPOST後にGETを実行するためにHttpClientを使用した場合の例外

例外を。

これはなぜ発生するのかわかりません。どんな助けもありがとう。

public static void main(String[] args) throws Exception { 

    // prepare post method 
    HttpPost post = new HttpPost("http://epaper02.niedersachsen.com/epaper/index_GT_neu.html"); 

    // add parameters to the post method 
    List <NameValuePair> parameters = new ArrayList <NameValuePair>(); 
    parameters.add(new BasicNameValuePair("username", "test")); 
    parameters.add(new BasicNameValuePair("passwort", "test")); 

    UrlEncodedFormEntity sendentity = new UrlEncodedFormEntity(parameters, HTTP.UTF_8); 
    post.setEntity(sendentity); 

    // create the client and execute the post method 
    HttpClient client = new DefaultHttpClient(); 
    HttpResponse postResponse = client.execute(post); 
    //Use same client to make GET (This is where exception occurs) 
    HttpGet httpget = new HttpGet(PDF_URL); 
    HttpContext context = new BasicHttpContext(); 

    HttpResponse getResponse = client.execute(httpget, context); 



    // retrieve the output and display it in console 
    System.out.print(convertInputStreamToString(postResponse.getEntity().getContent())); 
    client.getConnectionManager().shutdown(); 


} 
+0

参照:http://stackoverflow.com/questions/4612573/exception-using-httprequest-execute-invalid-use-of-singleclientconnmanager-co –

答えて

2

これは、POST後も接続マネージャがPOST応答接続を保持しているためです。クライアントを他の何かのために使用するには、そのリリースをリリースする必要があります。

これは動作するはずです:

HttpResponse postResponse = client.execute(post); 
EntityUtils.consume(postResponse.getEntity(); 

次に、あなたのGETを実行することができます。

+0

ありがとうございます!それは例外のためにそれをしました! – tzippy

+1

EntityUtils.consumeとは何ですか?このような方法は解決できません。 –

関連する問題