我有一个问题,我不知道如何解决,前几天我发布了一个关于使用会话网络服务与ksoap的问题。 ksoap session web service问题是ksoap没有cookie选项,因此可以存储sessionID。但我想了解一个可能的解决方案,它将与无cookie会话一起工作(在URL中发送sessionID)。问题是,Web服务中的会话无法在“无cookie模式”下工作,只能使用我无法使用的cookie。
另一个想法是在aspx页面中实现相同的Web服务方法,以便cookieless会话可以在那里工作,但我不知道如何调用页面方法。
由于我不知道如何调用页面方法,我认为我应该从我的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对象列表(已测试并正常工作,但如果我使用会话则不会。)
有人有提案吗?
答案 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