Подтвердить что ты не робот

Как использовать службы WCF, зависящие от сеанса, используя Ksoap2-Android

Я использую Ksoap2-Android для использования WCF Services.

Для клиента dotnet мы сохраняем allowCookies="true" в нашей конфигурации привязки и отправляет тот же сеанс и сохраняем мои сеансы неповрежденными в моих WCF-сервисах (моими услугами являются взаимозависимы и используют сеансы).

Любой знает такую ​​настройку для Ksoap2-Android, которая позволит мне потреблять Служба WCF сохраняет мою сессию без изменений на сервере.

В настоящий момент, когда я делаю новый вызов службы, изменяется sessionid, и все мои переменные сеанса очищают и теряют свои значения.

4b9b3361

Ответ 1

В С# я делаю следующий, просто используйте методы android для этого:

1.- Сделайте запрос Http, 2. Создайте Контейнер для файлов cookie по первому запросу. 3.- Поместите файл cookieContainer поверх второго запроса, например, вы можете вставить пакет в намерение для второго действия и использовать эти файлы cookie для отправки второго запроса http...

Мой код С#;

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 (потому что сервер требует меня) (для создания бот-поиска);)... надеюсь, что это даст вам идеи.