java.net.HttpURLConnection检查/ TEST连接,只有POST方法可用

时间:2015-11-25 06:51:52

标签: java java-ee httpurlconnection

我在Java代码中调用的其他服务器上有一个web服务。它只响应POST方法(没有GET方法)可用。当我使用请求XML实现完整方法并调用Webservice时,此请求/响应正常工作,即它正常工作。

但要求是 - >将有三个Web服务URL(可由管理员用户的我的应用程序配置)。首先,我必须检查第一个URL是否是连接。如果没有连接,则进行第二次连接......然后进行第三次连接。

我正在使用以下代码,但一次又一次地给了我

  

{responseCode = 500} 。   并不是    {responseCode = 200}

请建议我如何检查连接是否已建立?

/* Start : Surajit Biswas (25-NOV-2015) : test if Alcatel WS is connection or not*/
    String wsURL = "https://hostservername:postnumber";
            String wsUserName = "someUserName";
            String wsPassword = "somePassword";
            String requestXML = "<soapenv:Envelope ...."; /* As I told, not required here*/  
            try{
                String authString = wsUserName+":"+wsPassword;
                byte[] byteAuthStr = authString.getBytes();
                String authBase64Str = Base64.encode(byteAuthStr);
                System.out.println(authBase64Str);
            URL url = new URL(wsURL);
            URLConnection  conn =  url.openConnection();
            HttpURLConnection connection = (HttpURLConnection)conn;
            connection.setDoOutput(true); 
            /*connection.setRequestMethod("GET");
             connection.setRequestMethod("POST");*/     connection.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
            connection.setRequestProperty("Authorization", "Basic "+authBase64Str);
            connection.connect();
           System.out.println( connection.getResponseCode());
           boolean connected = false;
           switch (connection.getResponseCode()) {
           case HttpURLConnection.HTTP_OK:
               System.out.println(url + " **OK**");
               connected = true;
               break; // fine, go on
           case HttpURLConnection.HTTP_GATEWAY_TIMEOUT:
               System.out.println(url + " **gateway timeout**");
               break;// retry
           case HttpURLConnection.HTTP_UNAVAILABLE:
               System.out.println(url + "**unavailable**");
               break;// retry, server is unstable
           default:
               System.out.println(url + " **unknown response code**.");
               break ; // abort
       }
    }catch(Exception ex){
                System.err.println("Error creating HTTP connection");
                System.out.println(ex.getMessage());
            }
        }
/* End : Surajit Biswas (25-NOV-2015) : test if Alcatel WS is connection or not*/

先谢谢你的帮助...... Surajit Biswas

2 个答案:

答案 0 :(得分:3)

实现您的要求的方法只是尝试依次发布到每个网址,并在您获得成功后立即停止。

你在这里尝试的东西等于试图预测未来。它不会起作用。它无法工作。

答案 1 :(得分:-1)

您可以查看此行

URLConnection  conn =  url.openConnection();
if(conn != null)
{
  //do your stuff
}
else //call other url