aspx Web服务中的cookieless会话解决方案

时间:2012-10-02 15:54:34

标签: android asp.net asmx ksoap2 android-ksoap2

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

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

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

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

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

2)使用kso​​ap调用页面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对象列表(已测试并正常工作,但如果我使用会话则不会。)

有人有提案吗?

1 个答案:

答案 0 :(得分:0)

我能够做到like so

基本上我会调用登录Web服务并保存响应中出现的Set-Cookie标头值。然后在后续调用其他Web方法时返回值。

将会有两个'Set-Cookie'标题键,如下所示:

  

Set-Cookie:ASP.NET_SessionId = zpe44yb05a105zuz2f24aqi5;路径= /;   HttpOnly

     

设置Cookie:.ASPXAUTH = 4BEC23D4FA4B34C7145550F2FE279E047ED2E16F1503896C949AC3A08DAAC932F6869D9B667A6735D6EA6419074F0F1C34BC3F08210904B2BB9E543CF4CCE6C2E70975F804E2447F60966406ADC1F015D267B0413FF4C79A252C55E904AD86BB315ED161300DF200163CFA77492D680ACCF9C763F3F61F70DA4E8261C9DB6466;   路径= /;仅Http

保存它们并调用后续的“安全”webmethods,两个值在它们之间用;连接。

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

  

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