0

I get error when I try to post to server:

05-05 12:37:05.824: W/System.err(20610): org.apache.http.NoHttpResponseException: The target server failed to respond
05-05 12:37:05.824: W/System.err(20610):    at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:85)
05-05 12:37:05.824: W/System.err(20610):    at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
05-05 12:37:05.824: W/System.err(20610):    at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)
05-05 12:37:05.824: W/System.err(20610):    at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
05-05 12:37:05.824: W/System.err(20610):    at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
05-05 12:37:05.824: W/System.err(20610):    at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
05-05 12:37:05.824: W/System.err(20610):    at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
05-05 12:37:05.824: W/System.err(20610):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:428)
05-05 12:37:05.824: W/System.err(20610):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:670)
05-05 12:37:05.834: W/System.err(20610):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509)
05-05 12:37:05.834: W/System.err(20610):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
05-05 12:37:05.834: W/System.err(20610):    at 
05-05 12:37:05.834: W/System.err(20610):    at 
05-05 12:37:05.834: W/System.err(20610):    at 
05-05 12:37:05.834: W/System.err(20610):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-05 12:37:05.834: W/System.err(20610):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
05-05 12:37:05.834: W/System.err(20610):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
05-05 12:37:05.834: W/System.err(20610):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
05-05 12:37:05.834: W/System.err(20610):    at java.lang.Thread.run(Thread.java:856)

this is code my metod:

private HttpResponse connectAndDownload() {
            try {
                String postBody;
                if (requestItem == null) {
                    postBody = CollectBasicData.generateJson().toString();
                } else {
                    postBody = requestItem;
                }
                HttpParams httpParams = new BasicHttpParams();
                HttpProtocolParams.setVersion(httpParams, HttpVersion.HTTP_1_1);
                HttpProtocolParams.setContentCharset(httpParams, HTTP.UTF_8);
                final DefaultHttpClient client = new DefaultHttpClient(httpParams);

                final HttpUriRequest httpUriRequest;

                if(requestItem=="METHOD_GET"){
                    HttpGet httpget= new HttpGet(url);
                    if(DEBUG_VERSION.IS_DEBUG){
                        Log.v(" Download API", "url: " + url);
                        Log.v("DownloadApi", "postBody: " + postBody);
                    }
                    httpget.setHeader("Accept", "application/json");
                    httpget.setHeader("Content-type", "application/json");
                    httpUriRequest = httpget;
                }
                else{
                    HttpPost httppost = new HttpPost(url);
                    StringEntity se = new StringEntity(postBody, HTTP.UTF_8);
                    if(DEBUG_VERSION.IS_DEBUG){
                        Log.v(" Download API", "url: " + url);
                        Log.v("DownloadApi", "postBody: " + postBody);
                    }
                    httppost.setHeader("Accept", "application/json");
                    httppost.setHeader("Content-type", "application/json");
                    httppost.setEntity(se);
                    httpUriRequest = httppost;
                }


                HttpConnectionParams.setConnectionTimeout(httpUriRequest.getParams(), TIMEOUT);
                HttpConnectionParams.setSoTimeout(httpUriRequest.getParams(), TIMEOUT);
                httpUriRequest.addHeader(
                        "Authorization",
                        "Basic "
                                + Base64.encodeToString((CollectBasicData.getUserName() + ":" + CollectBasicData
                                        .getPassword()).getBytes(), Base64.NO_WRAP));

                HttpResponse response = client.execute(httpUriRequest);
                return response;

            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } 
            return null;
        }

I try solutions from: HttpClient on Android : NoHttpResponseException through UMTS/3G and http://code.google.com/p/android/issues/detail?id=13117 but no effects. This error show when I try post to service using 3G. When I use WIFI everything is ok.

Community
  • 1
  • 1
edi233
  • 3,511
  • 13
  • 56
  • 97

1 Answers1

0

I'm not sure but this may help. Try to connect to your server using the browser of your android to know from where exactly the problem is(3G connection or your application) and make sure that your server is accessible from the public internet.

M.Khouli
  • 3,992
  • 1
  • 23
  • 26