安卓:目标服务器无法响应 [英] Android : The target server failed to respond

查看:218
本文介绍了安卓:目标服务器无法响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

API链接:http://www.familybuds.com/storegrunt-new/api_home/validate_step_one/platform/1

POST参数:STORE_NAME =ABC code是GoDaddy的服务器上

这个API是工作的罚款,直到25July,但突然它停止从26日上午在Android应用程序的工作。 同样的API工作正常的iPhone应用程序。

同样是不工作的Andr​​oid应用程序的所有API和工作在iPhone应用程序

的情况下

Android的code:

 的HttpParams httpParameters =新BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParameters,10000);
        HttpConnectionParams.setSoTimeout(httpParameters,10000 + 12000);

        DefaultHttpClient客户端=新DefaultHttpClient(httpParameters);
        HttpPost httppost =新HttpPost(URL);


        HTT presponse响应;
        httppost.setEntity(新UrlEn codedFormEntity(namevaluepairs中));

        client.addRequestInterceptor(新的Htt prequestInterceptor(){

            @覆盖
            公共无效过程(Htt的prequest要求,HttpContext的背景下)
                    抛出HttpException,IOException异常{
                // TODO自动生成方法存根
                如果(!request.containsHeader(接受编码)){
                    request.addHeader(接受编码,GZIP);
                }
            }

        });

        client.addResponseInterceptor(新的Htt presponseInterceptor(){

            公共无效过程(
                    最后的Htt presponse响应,
                    最后的HttpContext上下文)抛出HttpException,IOException异常{
                HttpEntity实体= response.getEntity();
                如果(实体!= NULL){
                    头ceheader = entity.getContentEncoding();
                    如果(ceheader!= NULL){
                        HeaderElement [] codeCS = ceheader.getElements();
                        的for(int i = 0; I< codecs.length;我++){
                            如果(codeCS [I] .getName()。equalsIgnoreCase(GZIP)){
                                response.setEntity(
                                        新GzipDecom pressingEntity(response.getEntity()));
                                返回;
                            }
                        }
                    }
                }
            }


        });

       // Log.d(TAG,执行的请求:+ methodToString(mMethod)+:+ mUri.toString());

        响应= client.execute(httppost);
 

堆栈跟踪(日志)为Android:

  07-26 16:24:28.031:W / System.err的(13642):org.apache.http.NoHtt presponseException:目标服务器无法响应
07-26 16:24:28.089:W / System.err的(13642):在org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:85)
07-26 16:24:28.097:W / System.err的(13642):在org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
07-26 16:24:28.097:W / System.err的(13642):在org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:179)
07-26 16:24:28.101:W / System.err的(13642):在org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
07-26 16:24:28.105:W / System.err的(13642):在org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
07-26 16:24:28.105:W / System.err的(13642):在org.apache.http.protocol.Htt prequestExecutor.doReceiveResponse(Htt的prequestExecutor.java:279)
07-26 16:24:28.105:W / System.err的(13642):在org.apache.http.protocol.Htt prequestExecutor.execute(Htt的prequestExecutor.java:121)
07-26 16:24:28.105:W / System.err的(13642):在org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:421)
07-26 16:24:28.109:W / System.err的(13642):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
07-26 16:24:28.113:W / System.err的(13642):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
07-26 16:24:28.113:W / System.err的(13642):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
07-26 16:24:28.117:W / System.err的(13642):在com.webhelper.WebApiRequest.performJSon(WebApiRequest.java:111)
07-26 16:24:28.121:W / System.err的(13642):在com.webhelper.HttpHelper.doInBackground(HttpHelper.java:171)
07-26 16:24:28.121:W / System.err的(13642):在com.webhelper.HttpHelper.doInBackground(HttpHelper.java:1)
07-26 16:24:28.124:W / System.err的(13642):在android.os.AsyncTask $ 2.call(AsyncTask.java:185)
07-26 16:24:28.124:W / System.err的(13642):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:306)
07-26 16:24:28.128:W / System.err的(13642):在java.util.concurrent.FutureTask.run(FutureTask.java:138)
07-26 16:24:28.128:W / System.err的(13642):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
07-26 16:24:28.128:W / System.err的(13642):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:581)
07-26 16:24:28.132:W / System.err的(13642):在java.lang.Thread.run(Thread.java:1019)
 

已经尝试了从解决方案: HTTPS连接的Andr​​oid ,但没有运气。

我试图把在同一台服务器code在Amazon EC2服务器..和API与Android和iPhone应用程序。

运行良好

谁能帮助,有什么可能是为Android应用程序突然不工作的原因与服务器(API)上GoDaddy的通信

解决方案

 的HttpParams httpParameters =新BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters,10000);
HttpConnectionParams.setSoTimeout(httpParameters,10000 + 12000);


DefaultHttpClient客户端=新DefaultHttpClient(httpParameters);
HttpPost httppost =新HttpPost(URL);
 

请尝试使用替代上述code这个

 的HttpParams httpParameters =新BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters,10000);
HttpConnectionParams.setSoTimeout(httpParameters,10000 + 12000);


DefaultHttpClient客户端=新DefaultHttpClient();
HttpPost httppost =新HttpPost(URL);
httpost.setParams(httpParameters);
 

该解决方案为我工作......

API Link : http://www.familybuds.com/storegrunt-new/api_home/validate_step_one/platform/1

POST parameter : store_name = "abc" Code is on GoDaddy Server

This api was working fine till 25July, but suddenly it stopped working from 26th morning on Android APP. This same api is working fine on iPhone APP.

Same is the case for all api's not working on Android app and working on iPhone app

Android Code :

        HttpParams httpParameters = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParameters, 10000);
        HttpConnectionParams.setSoTimeout(httpParameters, 10000+12000);

        DefaultHttpClient  client = new DefaultHttpClient(httpParameters);
        HttpPost httppost = new HttpPost(url);


        HttpResponse response; 
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  

        client.addRequestInterceptor(new HttpRequestInterceptor() {              

            @Override
            public void process(HttpRequest request, HttpContext context)
                    throws HttpException, IOException {
                // TODO Auto-generated method stub
                if (!request.containsHeader("Accept-Encoding")) {
                    request.addHeader("Accept-Encoding", "gzip");
                }
            }

        });

        client.addResponseInterceptor(new HttpResponseInterceptor() {

            public void process(
                    final HttpResponse response,
                    final HttpContext context) throws HttpException, IOException {
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    Header ceheader = entity.getContentEncoding();
                    if (ceheader != null) {
                        HeaderElement[] codecs = ceheader.getElements();
                        for (int i = 0; i < codecs.length; i++) {
                            if (codecs[i].getName().equalsIgnoreCase("gzip")) {
                                response.setEntity(
                                        new GzipDecompressingEntity(response.getEntity()));
                                return;
                            }
                        }
                    }
                }
            }               


        });

       // Log.d(TAG, "Executing request: "+ methodToString(mMethod) +": "+ mUri.toString());

        response = client.execute(httppost);

Stack trace(Log) for android:

07-26 16:24:28.031: W/System.err(13642): org.apache.http.NoHttpResponseException: The target server failed to respond
07-26 16:24:28.089: W/System.err(13642):    at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:85)
07-26 16:24:28.097: W/System.err(13642):    at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
07-26 16:24:28.097: W/System.err(13642):    at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:179)
07-26 16:24:28.101: W/System.err(13642):    at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
07-26 16:24:28.105: W/System.err(13642):    at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
07-26 16:24:28.105: W/System.err(13642):    at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
07-26 16:24:28.105: W/System.err(13642):    at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
07-26 16:24:28.105: W/System.err(13642):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:421)
07-26 16:24:28.109: W/System.err(13642):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
07-26 16:24:28.113: W/System.err(13642):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
07-26 16:24:28.113: W/System.err(13642):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
07-26 16:24:28.117: W/System.err(13642):    at com.webhelper.WebApiRequest.performJSon(WebApiRequest.java:111)
07-26 16:24:28.121: W/System.err(13642):    at com.webhelper.HttpHelper.doInBackground(HttpHelper.java:171)
07-26 16:24:28.121: W/System.err(13642):    at com.webhelper.HttpHelper.doInBackground(HttpHelper.java:1)
07-26 16:24:28.124: W/System.err(13642):    at android.os.AsyncTask$2.call(AsyncTask.java:185)
07-26 16:24:28.124: W/System.err(13642):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
07-26 16:24:28.128: W/System.err(13642):    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
07-26 16:24:28.128: W/System.err(13642):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
07-26 16:24:28.128: W/System.err(13642):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
07-26 16:24:28.132: W/System.err(13642):    at java.lang.Thread.run(Thread.java:1019)

Have tried out solution from : Https connection Android but no Luck..

I tried putting the same server code on Amazon EC2 Server.. and API worked fine with android and iPhone APP.

Can anyone help, with what may be the reason for sudden non-working of Android app for communicating with server(API) on GoDaddy

解决方案

HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 10000);
HttpConnectionParams.setSoTimeout(httpParameters, 10000+12000);


DefaultHttpClient  client = new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost(url);

Try replacing above code with this

HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 10000);
HttpConnectionParams.setSoTimeout(httpParameters, 10000+12000);


DefaultHttpClient  client = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httpost.setParams(httpParameters);

This solution worked for me....

这篇关于安卓:目标服务器无法响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆