0

我的问题在我的标题中,我也会给出java代码和细节。

void getSourceCode(String text_url){

    String source_code="";
    BufferedReader reader = null;

    try {
          reader = new BufferedReader(new InputStreamReader((new URL(text_url)).openStream(), Charset.forName("UTF-8")));
          String inputLine;
          while ((inputLine = reader.readLine()) != null) {
            source_code+=inputLine.replace(" ", "");
          }
    } 

    catch (Exception e) {
        e.printStackTrace();
    } 

    finally {
          if (reader != null) {
                try {
                  reader.close();
                } 
                catch (IOException e) {
                  e.printStackTrace();
                }
          }
    }

    System.out.println( source_code );
}

例如,我通过 html a href="..." 解析发送“http://ekenlermangalkomuru.com/urunlerimiz/liste/144/BinarKömürü”作为参数,但错误报告是:

java.io.IOException:服务器返回 HTTP 响应代码:400 用于 URL: http
://ekenlermangalkomuru.com/urunlerimiz/liste/144/BinarKömürü at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) at java.net.URL.openStream(未知来源)

该链接适用于所有浏览器,但是当我尝试通过 java 代码连接时它不起作用。我该如何解决?谢谢大家的建议。。

4

2 回答 2

2

错误 400 表示请求格式错误,导致服务器无法处理它。您确定您对请求 URL 进行了正确的 URL 编码吗?对于类似:http ://ekenlermangalkomuru.com/urunlerimiz/liste/144 /BinarKömürü,至少 ö 和 ü 不是 ASCII 字母,需要进行编码以创建格式正确的请求。

于 2012-09-18T08:41:33.230 回答
1

错误 400 表示您没有向该站点发出“好的”请求。我认为您需要的不仅仅是 BufferedReader 来通过 HTTP 打开 URL。那是因为协议需要知道你想看到什么以及你是否有可用的缓存等。要打开一个 URL,你应该使用 HttpUrlConnection,检查如何在 java 中发送 HTTP 请求?了解信息,http://docs.oracle.com/javase/7/docs/api/java/net/HttpURLConnection.html也可能会有所帮助。

于 2012-09-18T08:37:57.843 回答