【发布时间】:2012-01-10 00:49:00
【问题描述】:
GetMessages 是我在 .net 网络服务中为我的聊天程序提供的一种方法。它获取消息集合,仅通过将最后一条消息 ID 保存在会话变量中来发送新消息。
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 的值类似于
设置cookie:ASP.NET_SessionId=0zzfwxxp1sakeafybjzsxp0k;路径=/; HttpOnly
但是,GUID 部分会更改每次调用 ... transport.call()
当我使用相同的标头时(通过将 if mSessionHeader == null 放在 for 循环周围)
它仍然不起作用......该方法会发送每条消息,而不管
我在 Web 服务中设置的位置
除了 ASP.NET_SessionId 之外,我是否必须添加更多标头?
【问题讨论】:
标签: android asp.net web-services session android-ksoap2