Java - 当我尝试获取源代码服务器时返回的HTTP响应代码:400



我的问题在于我的标题,我也会给出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 发送"http://ekenlermangalkomuru.com/urunlerimiz/liste/144/BinarKömürü"作为参数 href="..."解析,但错误报告是:

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代码连接时,它不起作用。我该如何解决?谢谢你的所有建议..

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

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

最新更新