有趣的是:我可能偶然找到了Is it possible to send HTTP request using plain socket connection and receive response without headers?的解决方案。我希望我忽视了一些事情。
无论如何,我正在连接到Web服务器,发送HTTP请求,接收响应并关闭连接。实际的HTTP会话(服务器端的tcpdump)如下所示:
GET /blah.php?param1=test1t¶m2=test2 HTTP/1.0
HTTP/1.1 200 OK
Date: Sat, 22 Sep 2012 10:16:46 GMT
Server: Apache/2.2.17 (Ubuntu)
X-Powered-By: PHP/5.3.5-1ubuntu7.8
Vary: Accept-Encoding
Content-Length: 17
Connection: close
Content-Type: text/html
<pre>173364</pre>
冷却。它工作......到目前为止。现在这是代码。字符串szRetval仅包含“&lt; pre&gt; 173364&lt; / pre&gt;”。
Socket s = new Socket("1.2.3.4", 80);
//DataInputStream in = new DataInputStream(s.getInputStream());
BufferedReader bin = new BufferedReader(new InputStreamReader(s.getInputStream()));
DataOutputStream out = new DataOutputStream(s.getOutputStream());
out.writeBytes(szRequest);
String szRetval = "";
String szLine = "";
while((szLine=bin.readLine())!=null) {
szRetval += szLine;
}
s.close();
return szRetval;
从代码示例中可以看出,我已经从DataInputStream切换到BufferedReader。它没有区别,所以我想这与Socket类本身有关。
为什么为什么(原始)套接字不返回http响应头?
Android 2.3.3,AsyncTask中的网络I / O,不使用代理。