2012-01-10 8 views
0

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だけヘッダーを追加する必要がありますか?

答えて

0

私はそれに答える必要はないと思っています...とにかく私はそれを見つけました。 ":ASP.NET_SessionId = #####クッキー"

応答

要求

- クッキーを送信する

要求ヘッダは、応答とは異なります

"Set-Cookie:ASP.NET_SessionId = #####"

したがって、上記のライン

-

reqHeaders.add(mSessionHeader); 

reqHeaders.add(new HeaderProperty("Cookie", mSessionHeader.getValue()); 
に変更されます
関連する問題