我对我正在进行的项目有一个快速的问题。我想通过一个没有外部库的简单方法连接到一个网站并获取其内容。 因此,使用套接字似乎是一个好主意,因为我可以发出HTTP GET请求并检查响应,更具体地说是BODY并将html代码加载到webview中。
在http://www.google.com/上执行以下代码会产生200响应,我可以加载大部分html(一些图像赢了&#t; t)。 但是,其他一些网址会给出不同的回复(http://www.cnn.com/为500回复,http://yahoo.com/为400,http://www.facebook.com为301),即使我可以在浏览器中完全打开它们。 我是否必须使用HTTP 1.1请求打开它们,或者为什么我没有从所有网址获得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。