android - 如何使用 Ksoap2-Android 使用 Session 依赖的 WCF 服务

标签 android wcf session ksoap2

我正在使用 Ksoap2-Android 来使用 WCF 服务。

对于 dotnet 客户端,我们将 allowCookies="true" 保留在绑定(bind)配置中,它会发送相同的 sessionid 并在我的 WCF 服务中保持 session 完整(< em>我的服务是 相互依赖并使用 session )。

任何人都知道 ksoap2-android 的任何此类设置,这将允许我使用 WCF 服务使我的 session 在服务器上保持不变。

目前,当我对服务进行新调用时,sessionid 被更改,我的所有 session 变量清除并释放它们的值。

最佳答案

在 C# 中,我执行下一步,只需使用 android 方法即可:

1.- 发出 Http 请求, 2.- 制作第一个请求的 Cookie 容器。 3.- 将 cookieContainer 放在第二个请求上,例如,您可以在第二个 Activity 的 Intent 中放入一个 bundle ,并使用此 cookie 发送第二个 http 请求...

我的 C# 代码;

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);
            }

        }
    }

我这样做是为了保留第一个请求的 sesionID,然后,在第二个请求中,我添加了 cookieContainer(因为服务器需要我)(进行机器人搜索);)......希望这能给你想法。

关于android - 如何使用 Ksoap2-Android 使用 Session 依赖的 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3101059/

相关文章:

php - 在 PHP AWS 中管理 session

Android:ListPreference 作为字体大小选择器或访问 ListView 项目的各个 View

Android:仅添加两组可绘制对象

.net - WCF:已超出最大字符串内容长度配额(8192)

java - onClick 到另一个 JSP 不起作用

php - 使用 PHP 存储用户输入数据 24 小时

java - 在 Java 中创建 LinearLayout - 元素未显示

成功插入数据库后的 Java 清除对象

WCF 命名管道客户端通知/检测管道状态更改

c# - 将 net.tcp 用于 STS 的问题