带有http请求的Javasocket无法从某些URL接收HTML
我有一个关于我正在做的项目的简短问题。我想连接到一个网站,并通过使用一个没有外部库的简单方法获取其内容。 因此,使用socket似乎是一个好主意,因为我可以发出HTTPGET请求并检查响应,更具体地说是检查主体并将html代码加载到webview中
在http://www.google.com/上执行以下代码会得到200个响应,我可以加载大部分html(一些图像不会显示)。 然而,其他一些url给出了不同的响应(500个响应用于http://www.cnn.com/,400个响应用于http://yahoo.com/,301个响应用于http://www.facebook.com),即使我可以在浏览器中完美地打开它们。 我是否必须使用HTTP 1.1请求来打开它们,或者为什么我没有从所有URL获得200个响应
try{
TextView editText = (TextView) findViewById(R.id.editText);
String pageAddr = editText.getText().toString();
URL url = new URL(pageAddr);
String websiteAddress = url.getHost();
Socket s = new Socket(websiteAddress, 80); //create socket
DataInputStream dIn = new DataInputStream(s.getInputStream());
DataOutputStream dOut = new DataOutputStream(s.getOutputStream());
dOut.write("GET / HTTP/1.0\r\n\r\n".getBytes()); //make request
boolean more_data = true;
String str;
String str2 = "";
while(more_data){
str = dIn.readLine(); //reading response line by line
str2 += str;
if(str==null)
more_data = false;
}
WebView webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadData(str2, "text/html", "UTF-8"); //load html to webview
}catch(IOException e){
}
预期的结果是得到200个响应,并获得我可以在浏览器上打开的URL的相应html
共 (0) 个答案