GetMessagesは、チャットプログラムの.net Webサービスにあるメソッドです。それはメッセージの集合を取得し、最後のメッセージIDをセッション変数に保存することによってのみ新しいメッセージを送信します。ksoap2を消費しています。セッションのあるネットサービス
HeaderProperty mSessionHeader = null;
public SoapObject GetMessages()
{
...
SoapObject request = new SoapObject(NAMESPACE, METHOD);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.V11);
envelope.dotNet = true;
envelope.bodyOut = request;
HttpTransport transport = new HttpTransport(URL);
transport.debug = true;
// Build request header
LinkedList<HeaderProperties> reqHeaders = new LinkList<HeaderProperties>();
if (mSessionHeader != null) {
reqHeaders.add(mSessionHeader); //using the session id from last header
}
List<HeaderProperties> respHeaders = transport.call(ACTION, envelope, reqHeaders);
// See note after code
for (HeaderProperty hp : respHeaders) {
if (hp.getKey().equalsIgnoreCase("set-cookie"))
{
mSessionHeader = hp;
break;
}
}
return (SoapObject) envelope.getResponse();
}
mSessionHeaderの値は
セットクッキーのようなものです:ASP.NET_SessionId = 0zzfwxxp1sakeafybjzsxp0k。パス= /; HttpOnlyの
ただし、GUIDの一部は、(すべての呼び出しに... transport.callを変更する)私は(mSessionHeader場合は、forループの周り== nullのを置くことによって)同じヘッダ を使用する場合
それはまだありません仕事... の位置に関係なく、すべてのメッセージが送信されます。
さらに、ASP.NET_SessionIdだけヘッダーを追加する必要がありますか?