设为首页 加入收藏

TOP

HttpSendRequest和Http头(二)
2014-11-23 22:37:11 来源: 作者: 【 】 浏览:2
Tags:HttpSendRequest Http
LPCTSTR lpHeader = _T("GET /img/baidu_sylogo1.gif /HTTP/1.1\r\n")_T("Referer: http://www.baidu.com/")_T("Host: www.baidu.com")_T("\r\n\r\n");

18. // HttpSendRequest返回0, dwErr = 12150, 含义ERROR_HTTP_HEADER_NOT_FOUND:The requested header could not be located.

19. Test2: // A/B/C行结尾没有\r\n

20. LPCTSTR lpHeader = _T("GET /img/baidu_sylogo1.gif /HTTP/1.1")_T("Referer: http://www.baidu.com/")_T("Host: www.baidu.com")_T("\r\n\r\n");

21. // HttpSendRequest返回1, dwErr = 0

22. Test3: // D行结尾一个\r\n

23. LPCTSTR lpHeader = _T("GET /img/baidu_sylogo1.gif /HTTP/1.1")_T("Referer: http://www.baidu.com/")_T("Host: www.baidu.com")_T("\r\n");

24. // HttpSendRequest返回1, dwErr = 0

25. Test4: // D行结尾没有\r\n

26. LPCTSTR lpHeader = _T("GET /img/baidu_sylogo1.gif /HTTP/1.1")_T("Referer: http://www.baidu.com/")_T("Host: www.baidu.com");

27. // HttpSendRequest返回1, dwErr = 0

从以上4个测试可以看出,HttpSendRequest的第二个参数header是一个字符串,A行必须不能有\r\n,其它行可以有,也可以没有.

在测试中还发现,仅仅只有A行会导致HttpSendRequest调用失败,必须得有B行.

其实lpHeader的值A行刚好对应HttpOpenRequest的参数lpszVerb,lpszObjectName和lpszVersion;B行对应参数lpszReferer.所以,#if 2...endif 还可以用下面的代码代替:

1. #if 3

2. hOpenRequestHandle = ::HttpOpenRequest(hConnectHandle, NULL, NULL, NULL, NULL, NULL, dwFlag, dwContext);

3. LPCTSTR lpHeader = _T("GET /img/baidu_sylogo1.gif /HTTP/1.1")_T("Referer: http://www.baidu.com/");

4. DWORD dwLen = _tcslen(lpHeader);

5. bRet = ::HttpAddRequestHeaders(hOpenRequestHandle, lpHeader, nLen, HTTP_ADDREQ_FLAG_REPLACE|HTTP_ADDREQ_FLAG_ADD);//返回1

6. bRet = ::HttpSendRequest(hOpenRequestHandle, NULL, 0, NULL, 0);//返回1

7. #endif

以上这些测试都是在VS2008系统中测试出来的,如果有谁发现HttpSendRequest发送的HTTP头结构文档及其它特点,还请告诉我,不胜感激

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇c语言进程相关信息 下一篇QT中三种数据类型之间的转换

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: