带有http请求的Java套接字无法从某些URL接收HTML

时间:2017-12-04 21:38:07

标签: java html sockets http request

我对我正在进行的项目有一个快速的问题。我想通过一个没有外部库的简单方法连接到一个网站并获取其内容。 因此,使用套接字似乎是一个好主意,因为我可以发出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。

0 个答案:

没有答案