我的问题在我的标题中,我也将提供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代码连接时它不起作用。我如何解决?感谢所有的建议..
答案 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也可能有帮助