1

我有一个我不知道如何解决的问题,几天前我发布了一个关于将会话 Web 服务与 ksoap 一起使用的问题。ksoap session web service 问题是 ksoap 没有 cookie 选项,因此 sessionID 可以被存储。但我想到了一个可能的解决方案,它可以与无 cookie 会话一起使用(在 url 中发送 sessionID)。问题是 Web 服务中的会话不能在“无 cookie 模式”下工作,只能使用我无法使用的 cookie。

另一个想法是在 aspx 页面中实现相同的 web 服务方法,以便无 cookie 会话将在那里工作,但我不知道如何调用页面方法。

而且由于我不知道如何调用页面方法,我认为我应该从我的 Web 服务中调用它,然后重新发送返回的数据。

所以我需要一种方法来实现我的解决方案:

1) 一种在 asmx Web 服务中使无 cookie 会话工作的方法

2) 一种使用 ksoap 调用页面 web 方法的方法,以便无烹饪会话将在那里工作

3)也许是一种从 Web 服务方法调用 aspx 页面方法的方法,以便我使用 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 方法的后续调用中返回这些值。

将有两个“Set-Cookie”标头键,如下所示:

设置 Cookie:ASP.NET_SessionId=zpe44yb05a105zuz2f24aqi5;路径=/; HttpOnly

Set-Cookie: .ASPXAUTH=4BEC23D4FA4B34C7145550F2FE279E047ED2E16F1503896C949AC3A08DAAC932F6869D9B667A6735D6EA6419074F0F1C34BC3F08210904B2BB9E543CF4CCE6C2E70975F804E2447F60966406ADC1F015D267B0413FF4C79A252C55E904AD86BB315ED161300DF200163CFA77492D680ACCF9C763F3F61F70DA4E8261C9DB6466; 路径=/; HttpOnly

保存它们并调用后续的“安全”网络方法,两个值之间用 a;连接。

您在后续调用中包含的标头应如下所示:

Cookie:ASP.NET_SessionId=zpe44yb05a105zuz2f24aqi5;路径=/; 仅http;.ASPXAUTH=4BEC23D4FA4B34C7145550F2FE279E047ED2E16F1503896C949AC3A08DAAC932F6869D9B667A6735D6EA6419074F0F1C34BC3F08210904B2BB9E543CF4CCE6C2E70975F804E2447F60966406ADC1F015D267B0413FF4C79A252C55E904AD86BB315ED161300DF200163CFA77492D680ACCF9C763F3F61F70DA4E8261C9DB6466; 路径=/; HttpOnly

于 2013-02-25T18:00:21.020 回答