android设备和我的tomcat服务器之间的通信失败502 Bad Gateway(org.apache.http.client.HttpResponseException:Bad Gateway)

时间:2016-11-30 15:03:40

标签: java http server tomcat8

我正在研究这个与我的tomcat http服务器通信的android应用程序。

此服务器已联机。

据我所知,有这个设备正在做惊人的事情;它是LG Optimus G Pro。

我在应用中测试了Volley代码和HttpClient代码,试图从http服务器中检索一些简单的数据。

这段代码已经工作了几个月,但我最近注意到它抛出异常并且没有连接:

11-30 15:53:09.157 4174-4197/supernet.interactapp:remote W/System.err: org.apache.http.client.HttpResponseException: Bad Gateway
11-30 15:53:09.177 4174-4197/supernet.interactapp:remote W/System.err:     at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:71)
11-30 15:53:09.177 4174-4197/supernet.interactapp:remote W/System.err:     at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:59)
11-30 15:53:09.177 4174-4197/supernet.interactapp:remote W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657)
11-30 15:53:09.177 4174-4197/supernet.interactapp:remote W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627)
11-30 15:53:09.177 4174-4197/supernet.interactapp:remote W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)
11-30 15:53:09.187 4174-4197/supernet.interactapp:remote W/System.err:     at supernet.interactapp.util.MessageManager.getProfileUrl(MessageManager.java:1120)
11-30 15:53:09.187 4174-4197/supernet.interactapp:remote W/System.err:     at supernet.interactapp.util.MessageManager.run(MessageManager.java:1689)

在使用排球码与该网址进行通信时,我也会得到类似的 Bad Gateway,502

每次都不会发生这种情况。

需要注意的事实:

  1. 它经常出现在Optimus G Pro上。当我在同一台Optimus G Pro上的浏览器(谷歌浏览器)中访问网址时,浏览器会响应:

    " WAPGW无法连接到远程服务器"

    当我在同一台设备上访问Opera Mini浏览器中的网址时,它会通过。

  2. 当发生这种情况时,如果我将Optimus G Pro用作笔记本电脑的无线热点并访问笔记本电脑浏览器上的网址(也称为Google Chrome)网址已成功打开....(与热点网络共享的移动网络相同!)

  3. 在重复运行应用程序后,此问题有时会神秘地消失。

  4. 它发生在其他测试设备上,但频率较低。

  5. 在发生此问题时,我可以在同一设备上打开其他网站(LG Optimus G Pro)。

  6. 请发生什么事?

    各种文章都表明,移动网络或某些上游服务器充当我服务器的网关。

    根据我在这里制作的事实,这似乎没有用水。

    以下是HttpClient版本

    public static boolean getLoadUrl(final Context context,Runnable onSuccess,final String url,int retries) {
    
            HttpClient messageClient;
            HttpPost messagePost;
    
            boolean connectionExists = connectionExists(context);
            if(!connectionExists){
                return false;
            }
    
    
            messageClient = new DefaultHttpClient();
            messageClient.getParams().setParameter("http.socket.timeout", 300 * 1000);
            messageClient.getParams().setParameter("http.connection.stalecheck", true);
    
            messagePost = new HttpPost( url );
    
            try {
                MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
    
                messagePost.setEntity(entity);
                String response =  messageClient.execute(messagePost, new BasicResponseHandler());
                ////RESPONSE IN
    
                response = ServerSelect.removePortNumberFromURL(response);
                Log.e("processed balancer",response);
                //The response is a load balancer server url.
                if(!response.startsWith("error")){
                    ServerSelect.LOAD_BALANCER_URL = response;
                    Utils.logErrorMessage("HttpClient gotten load-balancer-url---"+response,ServerSelect.class);
                    if(onSuccess!=null){
                        onSuccess.run();
                    }
                    return true;
                }
                else{
                    int retrier = retries - 1;
    
                    if (retrier == 0) {
                        return false;
                    }
                    if (retrier > 0) {
                        getLoadUrl(context,onSuccess,url,retrier);
                    }
                }
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            return false;
        }
    

    至于Volley,打印出VolleyError error对象

    error.networkResponse.headers给出

      {"Connection":"Close","Content-Length":"251","Content-Type":"text/html; charset\u003dUTF-8","X-Android-Received-Millis":"1480532198201","X-Android-Response-Source":"NETWORK 502","X-Android-Selected-Transport":"http/1.1","X-Android-Sent-Millis":"1480532176459"}
    

    onErrorResponse方法中的异常:

    11-30 19:56:38.264 30198-30198/supernet.interactapp:chatscp W/System.err: supernet.interactapp.volley.error.ServerError
    11-30 19:56:38.264 30198-30198/supernet.interactapp:chatscp W/System.err:     at supernet.interactapp.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:155)
    11-30 19:56:38.264 30198-30198/supernet.interactapp:chatscp W/System.err:     at supernet.interactapp.volley.NetworkDispatcher.run(NetworkDispatcher.java:119)
    11-30 19:56:38.274 30198-30198/supernet.interactapp:chatscp D/Volley: [1] MarkerLog.finish: (25001 ms) [ ] http://www.interactiapp.com/LoadBalancer/FetchLoadBalancersServlet?user_id=147391%2B2348165779034&user_phone=%2B2348165779034 0xa3346b58 IMMEDIATE 1
    

    LG Optimus G Pro在Android Kitkat 4.4.2上运行

0 个答案:

没有答案