WCF ServisLibrary - pobieranie danych z GUS - nie działa sprawdzeniem kodu captcha.

0

Witam szanownych forumowiczów, jest to mój pierwszy post więc proszę o wyrozumiałość.
napisałem aplikację kliencką do pobierania danych z GUS, wszystko działa jak należy, jednak żeby nie było konieczności każdorazowego wprowadzania kodu Captcha zacząłem pisać servis, wszystko jest ok to chwili gdy chcę zweryfikować kod Captcha.
W aplikacji klienckiej loguję się, pobieram kod i go sprawdzam w jednej metodzie, po czym pobieram dane kontrahentów, łączę się z gus za pomocą webservisu (https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/wsdl/UslugaBIRzewnPubl.xsd), posiadam klucz użytkownika z GUS.

w moim nowym serwisie zrobiłem funkcję do sprawdzania licencji zapisanej w bazie SQL, plan jest taki, aby podczas uruchamiania klienta była sprawdzana licencja i jeśli jest potrzeba wprowadzenia kodu Captcha to aby był on wysyłany do aplikacji, po czym w kliencie prowadzam nip do wyszukania kod Captcha i wysyłam dane do serwisu, zrobiłem funkcje:

  • sprawdzanie licencji, logowanie i ewentualne pobranie Captcha,
  • weryfikowanie wprowadzonego Captcha i odpytanie bazy gus i wysłanie wyników do aplikacji klienckiej.

mój problem polega na tym że jeśli w jednej metodzie mam logowanie i pobranie Captcha a w drugiej weryfikację wprowadzonego kodu to serwis GUS zawsze zwraca false, jeśli przeniosę sprawdzanie do funkcji z logowaniem i pobraniem kodu, serwis zwraca true.

bardzo proszę o pomoc w rozwiązaniu mojego problemu, nadmienię że testowałem na to na aplikacji konsolowej i jest ten sam efekt.
korzystam z metod web serwisu: ServiceGUS.UslugaBIRzewnPublClient(), oraz ServiceGUS.ParametryWyszukiwania();

public DoKlienta GusKaptcha(string userSerial, string userNip)
        {
            DoKlienta dane = new DoKlienta();
            if (!string.IsNullOrEmpty(userSerial) && !string.IsNullOrEmpty(userNip))
            {
                string lic = DatabaseConnect.SprawdzLicencje(userSerial, userNip);
 
                    try
                    {
                        GusZmienne.kluczSesji = GusZmienne.servis.Zaloguj(GusZmienne.kluczUsrzyt);
 
                      //  GusZmienne.scapcha64 = GusMetody.PobierzCaptcha(GusZmienne.kluczSesji);
 
                        if (!string.IsNullOrEmpty(GusZmienne.kluczSesji))
                        {
                          //tutaj usupełnienie klasy z danymi do wysłania do apl. klienckiej.
                          return (dane);
 
                        }
                    }
                    catch (Exception)
                    {
                         
                        return (dane);
                    }
                }
 }
 
public void questGus(string NipSzuk, string wprKod)
        {
            string regon = null;
 
            if (wprKod != NipSzuk)
            {
 
               // GusZmienne.kluczSesji = GusZmienne.servis.Zaloguj(GusZmienne.kluczUsrzyt);
                GusZmienne.scapcha64 = GusMetody.PobierzCaptcha(GusZmienne.kluczSesji);
 
                 
            }
            bool spr = GusZmienne.servis.SprawdzCaptcha(wprKod);
         }

W takiej formie mi działa poprawnie ale mi nie o taki efekt chodzi, bardzo proszę o pomoc w rozwiązaniu mojego problemu

0

Doszedłem, okazuje się, że trzeba przed sprawdzeniem podać jeszcze id sesji, zeby weryfikować kod który został przypisany do danego użytkownika,

 
 public string Sprawdz(string NipSzuk, string kod)
        {

         

            OperationContextScope scope = new OperationContextScope(servis.InnerChannel);
            HttpRequestMessageProperty reqProps = new HttpRequestMessageProperty();
            reqProps.Headers.Add("sid", kluczSesji);
            OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = reqProps;


            spr = servis.SprawdzCaptcha(kod);
               

            NipSzuk = NipSzuk.Replace("-", "");
            parametry.Nip = NipSzuk;

            danePodstawowe = servis.DaneSzukaj(parametry);
            return (danePodstawowe);
        }

Działa poprawnie :)

0

Witam, czy mógłbym prosić o pokazanie deklaracji zmiennej servis.

1 użytkowników online, w tym zalogowanych: 0, gości: 1