如何使用Ksoap2 Android使用依赖于会话的WCF服务
我正在使用如何使用Ksoap2 Android使用依赖于会话的WCF服务,android,wcf,session,ksoap2,Android,Wcf,Session,Ksoap2,我正在使用ksoap2android来消费WCF服务 对于dotnet客户端,我们在绑定配置中保留allowCookies=“true”,它发送相同的sessionid,并在我的WCF服务中保持会话完整(我的服务是 相互依赖并使用会话) 任何人都知道ksoap2 android的任何此类设置,这将允许我使用 WCF服务使我的会话在服务器上保持完整 当前,当我对该服务进行新调用时,sessionid会发生更改,我的所有 会话变量清除并释放其值。在C#中,我执行下一步,只需使用android方法即可
ksoap2android
来消费WCF
服务
对于dotnet客户端,我们在绑定配置中保留allowCookies=“true”
,它发送相同的sessionid,并在我的WCF服务中保持会话完整(我的服务是
相互依赖并使用会话)
任何人都知道ksoap2 android的任何此类设置,这将允许我使用
WCF服务使我的会话在服务器上保持完整
当前,当我对该服务进行新调用时,sessionid
会发生更改,我的所有
会话变量清除并释放其值。在C#中,我执行下一步,只需使用android方法即可:
1.-发出Http请求,
2.-为第一个请求制作一个Cookie容器。
3.-将cookieContainer置于第二个请求之上,例如,您可以将第二个活动的意图放入一个包中,并使用此Cookie发送第二个http请求
我的C#代码
我这样做是为了保留第一个请求的sesionID,然后在第二个请求中添加cookieContainer(因为服务器需要我)(进行机器人搜索);)。。。希望这能给你一些想法
protected static void GetData()
{
CookieContainer cookies = new CookieContainer();
HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create("https://any.com/url");
request1.CookieContainer = cookies;
HttpWebResponse response1 = (HttpWebResponse)request1.GetResponse();
StreamReader responseReader1 = new StreamReader(response1.GetResponseStream());
Response1 = responseReader1.ReadToEnd();
responseReader1.Close();
responseReader1.Dispose();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.CookieContainer = cookies;
request.Method = "GET";
request1.KeepAlive = true;
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader responseReader = new StreamReader(response.GetResponseStream());
Response = responseReader.ReadToEnd();
responseReader.Close();
responseReader.Dispose();
if (Response.Contains("Server Error in '/Verification' Application."))
{
Console.WriteLine("Empty Registry" + Url);
}
}
catch (WebException ex)
{
if (ex.Response != null)
{
Console.WriteLine("Failed at: " + Url);
}
if (ex.Status == WebExceptionStatus.ProtocolError)
{
if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.NotFound)
{
Console.WriteLine(ex.Status);
}
}
else if (ex.Status == WebExceptionStatus.NameResolutionFailure)
{
Console.WriteLine(ex.Status);
}
}
}