org.apache.http.NoHttpResponseException:目标服务器响应失败

Posted

技术标签:

【中文标题】org.apache.http.NoHttpResponseException:目标服务器响应失败【英文标题】:org.apache.http.NoHttpResponseException: The target server failed to respond 【发布时间】:2014-07-15 07:25:40 【问题描述】:

我正在使用以下代码将图像发布到服务器,但它在下面给出错误

我不明白问题是来自服务器端还是来自我的代码端。

谁能帮我解决这个问题?

代码:

 protected Long doInBackground(URL... arg0) 

            CustomMultiPartEntity multipartContent = new CustomMultiPartEntity(
                    new ProgressListener() 
                        @Override
                        public void transferred(long num) 
                            publishProgress((int) ((num / (float) totalSize) * 100));
                        
                    );
            try 
                for (int i = Constants.IMAGE_SELECTION; i < al_image_paths
                        .size(); i++) 
                    count = i + 1;
                    progressDialog.setProgress(0);

                    // String url=DataUrl.hostId+"/addpost/postImageOrVideo?";
                    HttpClient httpClient = new DefaultHttpClient();
                    HttpContext localContext = new BasicHttpContext();
                    HttpPost httpPost = new HttpPost(image_upload);

                    Log.e("strImagePath.... before uploading",
                            al_image_paths.get(i));

                    multipartContent.addPart("image", new FileBody(new File(
                            al_image_paths.get(i))));
                    multipartContent.addPart("sellleadid",
                            new StringBody(pref.getString("sellerID", "")));
                    multipartContent.addPart("action", new StringBody(
                            "Send Used Car Images"));
                    multipartContent.addPart("app_id", new StringBody(Constants.DEVICE_ID));

                    totalSize = multipartContent.getContentLength();

                    httpPost.setEntity(multipartContent);

                    HttpResponse response = httpClient.execute(httpPost,
                            localContext);
                    String serverResponse = EntityUtils.toString(response
                            .getEntity());
                    Log.e("serverResponse image", "<> " + serverResponse);

                    JSONObject object = new JSONObject(serverResponse);

                    if (object.getString("status").equals("200")) 
                        selectedImageIds.add(object.getString("imageid"));
                        selectedUrls.add(object.getString("url"));
                    
                
             catch (Exception e) 
                e.printStackTrace();
            
            return null;
        `enter code here`

【问题讨论】:

哪一行会抛出 NoHttpResponseException? 【参考方案1】:

确保您在清单文件中拥有android.permission.INTERNET 权限。

还要检查 - Apache HttpClient Interim Error: NoHttpResponseException。

编辑:

java.io.IOException
 +- org.apache.commons.httpclient.NoHttpResponseException

在某些情况下,通常是在负载较重时,Web 服务器 可能能够接收请求但无法处理它们。缺乏 工作线程等充足的资源就是一个很好的例子。这可能 导致服务器断开与客户端的连接而不给予 任何回应。 HttpClient 抛出 NoHttpResponseException 时 遇到这样的情况。在大多数情况下,重试一次是安全的 因 NoHttpResponseException 而失败的方法。

来源: http://hc.apache.org/httpclient-3.x/exception-handling.html

【讨论】:

我有上网权限 检查我的更新。所以你知道异常的原因和位置。 我使用org.apache.http.client.methods.HttpPost,如何自定义异常处理程序?谢谢。

以上是关于org.apache.http.NoHttpResponseException:目标服务器响应失败的主要内容,如果未能解决你的问题,请参考以下文章