0

サービスへの HTTP 経由のソケット接続があります。このサービスは HTTP/1.0 のみをサポートします。HTTP/1.0 は、応答が送信されるとデフォルトで接続を閉じます。それを可能にするために、このバージョンのプロトコルに追加されたパラメーターがあります - Connection: Keep-alive -。標準では、サービスがこのパラメーターをヘッダーにも追加する必要があると定義しています。これは、応答ヘッダーに含まれていないため発生していません。

ソケットからinputStreamを取得すると、マークがサポートされません。では、同じ接続を再利用して複数の要求/応答を送受信することはできないと安全に想定できますか?

更新 サービスを制御できず、リクエストを手動で作成します。

Socket socket = new Socket("server.com", 11111);

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8"));

writer.write("POST HTTP/1.0\r\n");
writer.write("Host: " + socket.getInetAddress().getHostName() + "\r\n");
writer.write("Content-Length: " + length + "\r\n");
writer.write("Content-Type: text/xml; charset=\"utf-8\"\r\n");
writer.write("Connection: Keep-alive\r\n");
writer.write("\r\n");

writer.write(xmldata);
writer.flush();

List<String> lines = IOUtils.readLines(socket.getInputStream());
4

1 に答える 1

1

HTTP 1.0 標準 ( RFC 1945 ) では、実際にはそのようなことは定義されていません。これは追加後の機能であり、サーバーはそれをサポートする義務はありません。

于 2013-04-24T08:32:16.067 に答える