1

解決方法がわからないという問題があります。数日前、ksoapでのセッションWebサービスの使用に関する質問を投稿しました。ksoapセッションWebサービス 問題は、セッションIDを保存できるようにksoapにCookieオプションがないことでした。しかし、私は、Cookieなしのセッションで機能する可能性のある解決策について考えています(URL内でsessionIDを送信します)。問題は、Webサービスのセッションが「Cookieなしモード」で機能せず、使用できないCookieでのみ機能することです。

もう1つのアイデアは、同じWebサービスメソッドをaspxページ内に実装して、Cookieなしのセッションがそこで機能するようにすることでしたが、ページメソッドを呼び出す方法がわかりません。

また、ページメソッドの呼び出し方法がわからないため、Webサービスから呼び出して、返されたデータを再送信する必要があると考えました。

だから私は自分のソリューションを実装する方法が必要です:

1)asmxWebサービスでCookieなしのセッションを機能させる方法

2)ksoapを使用してページWebメソッドを呼び出し、クックレスセッションがそこで機能するようにする方法

3)Webサービスメソッドからaspx pageメソッドを呼び出して、返されたデータをページメソッドに再送信する「ブリッジ」のようなWebサービスメソッドを使用する方法かもしれません。

    String NAMESPACE = "http://tempuri.org/";
    String METHOD_NAME = "Test";
    String SOAP_ACTION = "http://tempuri.org/Test";   
    String URL = "http://mysite.com/WebService.asmx";

    SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);

    PropertyInfo pi = new PropertyInfo();
    pi.setName("s");
    pi.setValue("dddddddd");
    pi.setType(String.class);
    Request.addProperty(pi);



     SoapSerializationEnvelope envelope = new       SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.setOutputSoapObject(Request);
    envelope.addMapping(NAMESPACE, "Category",new Category().getClass());
    AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);

    androidHttpTransport.call(SOAP_ACTION, envelope);
    SoapObject response = (SoapObject)envelope.getResponse(); 

........................。

そして、私のWebサービスメソッドはCategoryオブジェクトのリストを返します(これはテストされて機能していますが、セッションを使用している場合はそうではありません)。

誰か提案がありますか?

4

1 に答える 1

0

私はそうすることができまし

基本的に、ログインWebサービスを呼び出しSet-Cookieて、応答に含まれるヘッダー値を保存します。その後、他のWebメソッドへの後続の呼び出しで値を返します。

次のような2つの「Set-Cookie」ヘッダーキーがあります。

Set-Cookie:ASP.NET_SessionId = zpe44yb05a105zuz2f24aqi5; パス=/; HttpOnly

Set-Cookie:.ASPXAUTH = 4BEC23D4FA4B34C7145550F2FE279E047ED2E16F1503896C949AC3A08DAAC932F6869D9B667A6735D6EA6419074F0F1C34BC3F08210904B2BB9E543CF4CCE6C2E70975F804E2447F60966406ADC1F015D267B0413FF4C79A252C55E904AD86BB315ED161300DF200163CFA77492D680ACCF9C763F3F61F70DA4E8261C9DB6466。パス=/; HttpOnly

それらの両方を保存し、それらの間に連結された両方の値を使用して、後続の「安全な」Webメソッドを呼び出し;ます。

後続の呼び出しに含めるヘッダーは、次のようになります。

Cookie:ASP.NET_SessionId = zpe44yb05a105zuz2f24aqi5; パス=/; HttpOnly; .ASPXAUTH = 4BEC23D4FA4B34C7145550F2FE279E047ED2E16F1503896C949AC3A08DAAC932F6869D9B667A6735D6EA6419074F0F1C34BC3F08210904B2BB9E543CF4CCE6C2E70975F804E2447F60966406ADC1F015D267B0413FF4C79A252C55E904AD86BB315ED161300DF200163CFA77492D680ACCF9C763F3F61F70DA4E8261C9DB6466。パス=/; HttpOnly

于 2013-02-25T18:00:21.020 に答える