Jak oprogramować dostęp do bazy danych REGON?

Jak oprogramować dostęp do bazy danych REGON?
VA
  • Rejestracja:około 2 lata
  • Ostatnio:około 2 lata
  • Postów:2
0

Jak w temacie. Mam za pomocą wsutil.exe wygenerowane pliki "c" i "h", Na podstawie przykładu https://learn.microsoft.com/en-us/windows/win32/wsw/httpcalculatorclientexample otwieram z powodzeniem proxy, jednak próba wywołana operacji Zaloguj powoduje błąd: "0x803d0020: Adres URL punktu końcowego jest nieprawidłowy.". Wiem, że do sukcesu konieczne jest uzupełnienie wygenerowanej procedury o header:
"...
<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
wsa:Tohttps://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc</wsa:To>
wsa:Actionhttp://CIS/BIR/PUBL/2014/07/IUslugaBIRzewnPubl/Zaloguj</wsa:Action>
..."
Niestety nie wiem jak to zrobić i tu prośba o pomoc :-). Wskazanie kierunku :-). Mój kod na teraz wyglada następująco:

Kopiuj
class __declspec(dllexport) REGON
{
public:
	REGON(WCHAR* nKey, WCHAR* nNIP);

private:
	void release();
	HRESULT				hr = NOERROR;
	WS_ERROR*			error = NULL;
	WS_HEAP*			heap = NULL;
	WS_SERVICE_PROXY*	proxy = NULL;
	WCHAR**				ZalogujResult = NULL;
	void GetError(HRESULT errorCode, WS_ERROR* error);
};

REGON::REGON(WCHAR* nKey, WCHAR* nNIP)
{
    WS_ENDPOINT_ADDRESS address = {};
    static const WS_STRING url = WS_STRING_VALUE((WCHAR*)L"https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc");
    address.url = url;

    if (FAILED(this->hr = WsCreateError(NULL, 0, &this->error)))
    {
        this->release();
        return;
    }
 
    if (FAILED(this->hr = WsCreateHeap(2048, 512, NULL, 0, &this->heap, this->error)))
    {
        this->release();
        return;
    }
   
    if (FAILED(this->hr = WsCreateServiceProxy(WS_CHANNEL_TYPE_REQUEST, WS_HTTP_CHANNEL_BINDING, NULL, NULL, 0, NULL, 0, &this->proxy, this->error)))

    {
        this->release();
        return;
    }

    if (FAILED(this->hr = WsOpenServiceProxy(this->proxy, &address, NULL, error)))
    {
        this->release();
        return;
    }
    this->hr = e3_Zaloguj(this->proxy, nKey, this->ZalogujResult, this->heap, NULL, 0, NULL, this->error);
}
edytowany 2x, ostatnio: Riddle
ZD
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
0

SOAP w C ... dają za to order bohatera związku radzieckiego ?
Bo powinni. Pośmiertny

O ile kibicowałem SOAP, i na wdrożeniach Delphi / C# / Java byłem w miarę zadowolony, w gołym C bym sie nie podjął (nie ma prawdziwego C++ ???)

Uwaga na poziomie teoretycznym:
w SOAP sa jakby dwa poziomy, rzeczywiste kotłowanie kodu nazwijmy biznesowego (napisane w WSDL reguły, np kalkulator) i poziom koperty (envelope), jakby nośnika. Typową kopertą jest HTTP, ale nie jedyną.
Informacja jest teoretyczna, nigdy nie musiałem z tym krwawo walczyć (zawsze było dobrze), może czegoś takiego brakuje ?


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
edytowany 1x, ostatnio: ZrobieDobrze
VA
  • Rejestracja:około 2 lata
  • Ostatnio:około 2 lata
  • Postów:2
0

No mam nadzieję, że jednak nie pośmiertnie :-D

Marius.Maximus
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 6 godzin
  • Postów:2100
1

Jak ostatnio używałem tej technologi w Delphi to wystarczyło zaimportować WSDL i kod był w 100% działający
Na tym Twoim WSDL też wygenerowały się klasy zgodne z dokumentacją , potem wysypuje na Zaloguj

Ja bym wrócił do dokumentacji , a jak po 10 minutach jak nic nie natchnie to odpoczynek i za godzinę powtórka :D
Poszukał bym moze obok dokumentacji jest przykład , ewentualnie kontakt techniczny i zapytał bym czy ta usługa działa.


--
Nie przyjmuję reklamacji za moje rady, używasz na własną odpowiedzialność.
Programowanie bez formatowania to jak chodzenie ze spodniami spuszczonymi na kostki. Owszem da się ale po pierwsze nie wygodne, po drugie nieprzyzwoicie wygląda.
Przed zaczęciem nowego wątku przeczytam problem XY

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.