using wininet in C++ -
i have server if sent "https://mydomain/dir1/dir2/login.html?u=1234&t=5678" respond xml document. know how can in wininet?
here have done far:
std::string getlogindata(void) { hinternet hinternet, hconnection, hrequest; std::string retval; hinternet = internetopen(l"my application", internet_open_type_direct, null, null, 0); if(null != hinternet) { hconnection = internetconnect(hinternet, l"mydomain", internet_default_https_port, l"", l"", internet_service_http, 0, null); if(null != hconnection) { const wchar_t* lplpszaccepttypes[] = {l"text/xml", l"application/xml", l"application/xhtml+xml", null}; hrequest = httpopenrequest(hconnection, l"get", l"dir1/dir2/login.html", null, null, lplpszaccepttypes, internet_flag_dont_cache | internet_flag_ignore_cert_cn_invalid | internet_flag_ignore_cert_date_invalid | internet_flag_ignore_redirect_to_http | internet_flag_ignore_redirect_to_https | internet_flag_keep_connection | internet_flag_no_auth | internet_flag_no_ui | internet_flag_pragma_nocache, 0); if(null != hrequest) { const char params[] = {"u=1234&t=5678"}; bool rc = httpsendrequest(hrequest, null, 0, (void*)params, strlen(params)); if(rc) // here rc = 0 , getlasterror() returns 12152 { dword availdatalen; char buff[4096]; dword readcount = error_internet_connection_reset; internetquerydataavailable(hinternet, &availdatalen, 0, 0); while(0 < availdatalen) { internetreadfile(hinternet, buff, min(sizeof(buff), availdatalen), &readcount); availdatalen -= readcount; retval = retval + buff; } } internetclosehandle(hrequest); } internetclosehandle(hconnection); } internetclosehandle(hinternet); } return retval; } but can see in code httpsendrequest() fails , getlasterror() returns 12152
thank in advance sam
that's error_winhttp_invalid_server_response. best guess you're making http request on https port.
i don't know api looks need add internet_flag_secure httpopenrequest call, , / or in flags parameter of internetconnect call too:
internet_flag_secure
uses secure transaction semantics. translates using secure sockets layer/private communications technology (ssl/pct) , meaningful in http requests. flag used httpopenrequest , internetopenurl, redundant if https:// appears in url.the internetconnect function uses flag http connections; request handles created under connection inherit flag.
Comments
Post a Comment