サーバーにサブスクライブするように求めるPOSTメッセージを使用してサーバーに接続しようとしています。その後、サーバーはhttp接続を開いたままにし、サブスクリプションのキャンセルまたは接続を自分で閉じるように要求するまで、ライブステータスの非同期メッセージを返送します。サーバーからのこれらの後続の応答を読み取るのに問題があります。以下のコードはサーバーに接続し、最初の応答を正常に読み取り、コンソールに出力します。問題は、その後、同じ応答(最初の応答)を無限に読み取り、画面に出力し続けることです。
誰かが私がここで台無しにしているものを見ますか?サーバーからの次の非同期メッセージを監視し、メッセージが届くまでブロックしようとしています。また、次のメッセージが非同期で表示されたときに通知を受け取るように登録する方法を誰かが知っている場合は、待機をブロックする必要がないので、さらに良いでしょう。
public void HttpSubscription()
{
byte[] result = new byte[10240];
try
{
/* Generate the hard coded request data */
final StringBuffer soap = new StringBuffer();
soap.append("<s:Envelope><s:Body><SoapTest1>thing1</SoapTest1></s:Body></s:Envelope>");
// to make HTTP Post request with HttpURLConnection
URL url = new URL("http://192.168.1.110:80/services");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// then set some properties and make a request
conn.setRequestMethod("POST");
conn.setRequestProperty( "Content-type", "text/xml; charset=utf-8" );
// Get a handle to the output stream
OutputStream OStream = conn.getOutputStream();
// Write the soap data to the output stream
OStream.write(soap.toString().getBytes());
InputStream ResponseStream = conn.getInputStream();
while (true)
{
int len = ResponseStream.read(result);
String value = new String(result);
System.out.println(value);
}
}
catch (Exception e)
{
System.out.println(e);
}
return;
}