URL无法在java代码中访问

时间:2011-05-30 12:19:52

标签: java http url

在java代码中运行时,可从浏览器访问的URL提供404响应代码。

有什么问题? ..任何人都可以解释一下这个

public String login(String url) {
        URL targetURL;
        long start = 0;
        long end = 0;
        float difference = 0;
        HttpURLConnection httpURLConnection;
        StringBuffer strbufstatus = new StringBuffer();
        try {
            //Connecting to the url
            targetURL = new URL(url);

            start = System.currentTimeMillis();

            httpURLConnection = (HttpURLConnection) targetURL.openConnection();

            httpURLConnection.setUseCaches(false);

            httpURLConnection.setAllowUserInteraction(false);

            httpURLConnection.setDoInput(true);

            httpURLConnection.setRequestMethod("GET");

            httpURLConnection.connect();

            //Getting the respond Code
            int responseCode = httpURLConnection.getResponseCode();

            strbufstatus.append("Response Code===> " + responseCode + "<br>");

            if(responseCode==200){


            // System.out.println("respondcode===> " + responseCode);

            end = System.currentTimeMillis();

            //Calculating the response time

            difference = (end - start);

            difference = difference / 1000;

            // System.out.println("Response Time===> " + difference);

            strbufstatus.append("Rsponse time===> " + difference + "<br>");
            }
            } catch (IOException ex) {
            if (ex.toString().contains("java.net.UnknownHostException:")) {

                strbufstatus.append(" - UnknownHostException has occured during Httpconnection\n");
            } else if (ex.toString().contains("java.net.MalformedURLException: unknown protocol:")) {
                strbufstatus.append(" - Unknown Protocol\n");
            } else if (ex.toString().contains("java.net.ConnectException: Connection timed out: connect")) {
                strbufstatus.append("Connection TimedOut\n");
            } else {
                strbufstatus.append("IOException has occured during Httpconnection \n");
            }
            ex.printStackTrace();
        }
        System.out.println("Status" +strbufstatus);
        return strbufstatus.toString();


    }

3 个答案:

答案 0 :(得分:5)

以下可能是问题:

  • 错误代码(如果您对此案件有疑问,请打开代码)
  • 您支持代理,浏览器已配置但您的程序没有
  • 如果您尝试访问安全网址HTTPS,则使用证书配置

答案 1 :(得分:1)

来自维基百科的错误代码404:

  

404或Not Found错误消息是HTTP标准响应代码,表示客户端能够与服务器通信,但服务器无法找到所请求的内容。

应该有一个人类可读的“原因短语”,解释尚未找到的。您只是阅读响应代码 - 另外阅读和打印:

String responseMessage = httpUrlConnection.responseMessage();

答案 2 :(得分:0)

一种可能性是URL包含一些在URL中无效的字符,例如空格或ASCII范围之外的某些字符。这需要以某种方式转换为URL,例如%HH转义序列。当您输入地址时,浏览器会自动执行此操作,但它们并非都以相同的方式执行此操作。例如,有些人使用现在推荐的转换为UTF-8序列的惯例,但有些人使用ISO-8859-1。有些将空间转换为+,有些转换为%20。如果您希望程序以与浏览器相同的方式处理URL,则必须在Java代码中进行正确的编码。