您的位置:首页 > 编程语言 > C语言/C++

C++获取网页数据时的505错误

2015-12-18 13:04 351 查看
包头少信息 :添加包头信息

正常情况下,ucenter请求程序应该返回的是”1″, 用浏览器获取到的是正常的。然而通过api调用返回的是一串乱码:转换成16进制为“ 1f8b 0800 0000 0000 0003 3204 0000 00ff  ff03 00b7 efdc 8301 0000 000a”。

网上搜索了一下发现“1f8b 0800 0000 0000”应该是gzip的文件头,所以更加确定了问题出现在gzip上。

在尝试了将nginx关闭gzip后,发现问题依旧。然后发现原来php启用了,自动gzip。于是在php.ini中将 zlib.output_compression = Off 关掉后,问题解决!//打开HTTP请求句柄
hHttpRequest = ::HttpOpenRequest(hHttpConnect,
_T("GET"),
szUrlPath,
HTTP_VERSION,
NULL,
NULL,
INTERNET_FLAG_NO_UI | INTERNET_FLAG_DONT_CACHE,
1);
if (NULL == hHttpRequest)
{
goto RET;
}

BOOL bRet;
TCHAR headerLanguage[] = _T("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
TCHAR headerEncoding[] = _T("Accept-Encoding: deflate, sdch";);
TCHAR headerCharset[] = _T("Accept-Language: zh-CN,zh;q=0.8");
TCHAR headerContentType[] = _T("User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36";);
bRet = HttpAddRequestHeaders(hHttpRequest, headerLanguage, -1, HTTP_ADDREQ_FLAG_ADD|HTTP_ADDREQ_FLAG_REPLACE);
bRet = HttpAddRequestHeaders(hHttpRequest, headerEncoding, -1, HTTP_ADDREQ_FLAG_ADD|HTTP_ADDREQ_FLAG_REPLACE);
bRet = HttpAddRequestHeaders(hHttpRequest, headerCharset, -1, HTTP_ADDREQ_FLAG_ADD|HTTP_ADDREQ_FLAG_REPLACE);
bRet = HttpAddRequestHeaders(hHttpRequest, headerContentType, -1, HTTP_ADDREQ_FLAG_ADD|HTTP_ADDREQ_FLAG_REPLACE);

if (!::HttpSendRequestW(hHttpRequest, NULL, 0, NULL, NULL)) //向服务器发送这个请求
{
goto RET;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ windows