【发布时间】:2014-03-18 15:30:16
【问题描述】:
我的应用程序中有以下代码。 在 HttpSendRequest() 中,我放置了一个包含一些选项的标头字符串,但是 cookie 部分被删除了。
如何通过 wininet 避免这种行为。 ?
char *get_data_from_url_new(gchar *data_url)
{
char Agent[128] = {0};
char ServerName[128] = {0};
char Verb[128] = {0};
char ObjectName[128] = {0};
char Optional[128] = {0};
int OptionalLength = 0;
char Headers[128] = {0};
int HeadersLength = 0;
HINTERNET InetOpen;
HINTERNET InetConnect;
HINTERNET HtOpenRequest;
DWORD flags = 0;
if (!InternetGetConnectedState(&flags, 0)) {
return "0";
}
sprintf(Agent, "%s", "myagent");
InetOpen = InternetOpen(Agent, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (InetOpen == NULL) {
return "0";
}
sprintf(ServerName, "%s", "192.168.2.150");
InetConnect = InternetConnect(InetOpen, ServerName, INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
if (InetConnect == NULL) {
return "0";
}
sprintf(Verb, "%s", "POST");
sprintf(ObjectName, "%s", "cgi-bin/icetea?ifr=101");
HtOpenRequest = HttpOpenRequest(InetConnect, Verb, ObjectName, NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
if (HtOpenRequest == NULL) {
return "0";
}
sprintf(Headers, "%s", "Connection: keep-alive\r\nCookie: username=johndoe\r\nContent-Type: application/x-www-form-urlencoded");
HeadersLength = strlen(Headers);
sprintf(Optional, "%s", "Some FORM data in pairs");
OptionalLength = strlen(Optional);
HttpSendRequest(HtOpenRequest, Headers, HeadersLength, Optional, OptionalLength);
InternetCloseHandle(InetOpen);
InternetCloseHandle(InetConnect);
InternetCloseHandle(HtOpenRequest);
return "0";
}
【问题讨论】: