Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java—当我试图获取源代码时,服务器返回HTTP响应代码:400_Java_Html_Http - Fatal编程技术网

Java—当我试图获取源代码时,服务器返回HTTP响应代码:400

Java—当我试图获取源代码时,服务器返回HTTP响应代码:400,java,html,http,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-

我的问题在我的标题中,我将给出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 );
}
例如,我发送“http://ekenlermangalkomuru.com/urunlerimiz/liste/144/BinarKömürü”作为参数,通过html a href=“…”解析,但错误报告为:

java.io.IOException:服务器返回了URL:
位于sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知源) 位于java.net.URL.openStream(未知源)


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

错误400表示您没有向网站提出“良好”的请求。我认为,要通过HTTP打开URL,您需要的不仅仅是一个BufferedReader。这是因为协议需要知道您想要查看的内容,以及是否有可用的缓存等。要打开URL,您应该使用HttpUrlConnection、签出以获取信息,也可以提供帮助。

错误400表示您没有向站点发出“良好”请求。我认为,要通过HTTP打开URL,您需要的不仅仅是一个BufferedReader。这是因为协议需要知道您想要查看的内容以及是否有可用的缓存等。要打开URL,您应该使用HttpUrlConnection、签出以获取信息,这也可能会有所帮助。

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

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

什么是“转义”呢?你能举个例子吗。顺便说一下。我有一个java程序,它获取给定url的源代码。然后它解析链接的源代码,并递归调用这些链接的所有进程。因此getSourceCode()->parseSourceCodeForLinks()->GetSourceCodeOfLinks()->ParseSourceCodeOfLinks。。。。。。。。。我的意思是我不会手动给getSourceCode(String text_url)参数,它会给出解析器从源代码程序解析的内容,比如
http://ekenlermangalkomuru.com/urunlerimiz/liste/144/BinarK%C3%B6m%C3%BCr%C3%BC
工作得更好?
“http://ekenlermangalkomuru.com/urunlerimiz/liste/144/“+urlcoder.encode(“BinarKömürü”)
可以为您做到这一点…但它现在正在工作。因此,您说错误的部分是土耳其字符,如ö,ü…,然后我必须将整个链接发送到字符过滤器方法,此方法必须使用URLENCDER将ASCII表中不存在的字母转换为合法字符。对吗?是的,您需要对字符进行编码。对整个链接进行编码不会导致错误不过要有道理:你不想对例如
/
进行编码……什么是“转义”的意思?你能举个例子吗?顺便说一句。我有一个java程序,它可以获取给定url的源代码。在这之后,它会解析链接的源代码,对于这些链接,它会递归调用所有进程。所以getSourceCode()->parseSourceCodeForLinks()->GetSourceCodeOfLinks()->ParseSourceCode………我的意思是我没有给getSourceCode(字符串文本\u url)参数手动地,它给出了解析器从源代码程序解析的内容,类似于
http://ekenlermangalkomuru.com/urunlerimiz/liste/144/BinarK%C3%B6m%C3%BCr%C3%BC
工作得更好?
“http://ekenlermangalkomuru.com/urunlerimiz/liste/144/“+URLEncoder.encode(“BinarKömürü”)
可以为您做到这一点…但它现在正在工作。因此,您说错误的部分是土耳其字符,如ö,ü…,然后我必须将整个链接发送到字符过滤器方法,此方法必须使用URLENCDER将ASCII表中不存在的字母转换为合法字符。对吗?是的,您需要对字符进行编码。对整个链接进行编码不会导致错误但要有道理:你不想对例如
/
进行编码。。。