HttpClient.excute(HttpPost)没有响应

时间:2013-05-22 16:28:57

标签: java http rest

我构造了一个HttpClient,并设置了超时参数。

代码是这样的:

while(bufferedinputstream.read()!=-1){

    post.setEntity(multipartEntity);
    HttpResponse response = httpClient.excute(post);
}

它对前几个请求工作正常,然后以某种方式不返回响应,并且没有抛出异常或超时异常。任何人都知道发生了什么事?

1 个答案:

答案 0 :(得分:-1)

因为你没有收到任何错误或异常(你打印出来吗?),你可以查看你的回复的satusCode。也许有帮助。

(来自我的AsyncTask的重写方法)

protected String doInBackground(String... arg) {
    String url = arg[0]; // Added this line
    //...

    Log.i(DEBUG_TAG, "URL CALL -> " + url);

    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(url);

    String mResponse = "";
    try {

         List<NameValuePair> params = new LinkedList<NameValuePair>();
         //...

         post.setEntity(new UrlEncodedFormEntity(params));

        HttpResponse mHTTPResponse = client.execute(post);

        StatusLine statusLine = mHTTPResponse.getStatusLine();
        int statusCode = statusLine.getStatusCode();

        if (statusCode == 200) { // 

            //get response
            BufferedReader rd = new BufferedReader(new InputStreamReader(
                    mHTTPResponse.getEntity().getContent()));

            StringBuilder builder = new StringBuilder();
            String aux = "";

            while ((aux = rd.readLine()) != null) {
                builder.append(aux);
            }

            mResponse = builder.toString();

        } else {
            //cancel task and show error
            Log.e(DEBUG_TAG, "ERROR in Request:" + statusCode);
            this.cancel(true);
        }
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return mResponse;
}