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;
}
正常情况下,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++实现JNI接口需要注意的事项
- 如何重装TCP/IP协议
- 关于指针的一些事情
- Windows 8 官方高清壁纸欣赏与下载
- 谁是桌面王者?Win PK Linux三大镇山之宝
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows Clang开发环境备忘
- 从Windows系统下访问Linux分区相关软件
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows下搭建本地SVN服务器
- c++ primer 第五版 笔记前言
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
- share_ptr的几个注意点
- 微软镜像下载
- windows server域用户提升到本地更高权限组中的方法
- 使用命令修改注册表键值及权限
- 通过手机、电脑远程开关机,Windows和linux机手机,电脑相互控制