有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带有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) 个答案