How can I programmatically test an HTTP connection?

前端 未结 4 1772
时光说笑
时光说笑 2020-12-09 04:04

Using Java, how can I test that a URL is contactable, and returns a valid response?

http://stackoverflow.com/about
相关标签:
4条回答
  • 2020-12-09 04:52
    System.out.println(new InetSocketAddress("http://stackoverflow.com/about", 80).isUnresolved());
    

    delivers false if page is reachable, which is a precondition.

    In order to cover initial question completely, you need to implement a http get or post.

    0 讨论(0)
  • 2020-12-09 04:53
    import org.apache.commons.validator.UrlValidator;
    
    public class ValidateUrlExample {
    
        public static void main(String[] args) {
    
            UrlValidator urlValidator = new UrlValidator();
    
            //valid URL
            if (urlValidator.isValid("http://www.mkyong.com")) {
                System.out.println("url is valid");
            } else {
                System.out.println("url is invalid");
            }
    
            //invalid URL
            if (urlValidator.isValid("http://invalidURL^$&%$&^")) {
                System.out.println("url is valid");
            } else {
                System.out.println("url is invalid");
            }
        }
    }
    

    Output:

    url is valid
    url is invalid
    

    source : http://www.mkyong.com/java/how-to-validate-url-in-java/

    0 讨论(0)
  • 2020-12-09 04:57

    The solution as a unit test:

    public void testURL() throws Exception {
        String strUrl = "http://stackoverflow.com/about";
    
        try {
            URL url = new URL(strUrl);
            HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
            urlConn.connect();
    
            assertEquals(HttpURLConnection.HTTP_OK, urlConn.getResponseCode());
        } catch (IOException e) {
            System.err.println("Error creating HTTP connection");
            e.printStackTrace();
            throw e;
        }
    }
    
    0 讨论(0)
  • 2020-12-09 04:57

    Since java 5 if i recall, the InetAdress class contains a method called isReachable(); so you can use it to make a ping implementation in java. You can also specify a timeout for this method. This is just another alternative to the unit test method posted above, which is probably more efficient.

    0 讨论(0)
提交回复
热议问题