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