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