3

面白いことに、 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&param2=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 には、「<pre>173364</pre>」のみが含まれます。

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、プロキシを使用しない。

4

0 に答える 0