Java - 当我试图让源代码服务器返回HTTP响应代码时:400

时间:2012-09-18 08:30:48

标签: java html http

我的问题在我的标题中,我也将提供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)   在java.net.URL.openStream(未知来源)

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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