如何HttpQueryInfo网页的HTTP_QUERY_ACCEPT_CHARSET

south2000 2008-10-14 03:42:27
我会用HTTP_QUERY_STATUS_CODE,方法如下
DWORD dwStatus;
DWORD dwStatusLen = sizeof(dwStatus);
bSuccess = ::HttpQueryInfo(hRequest, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwStatusLen, NULL);

//////////////////////////////

如何得到网页使用的字符集HTTP_QUERY_ACCEPT_CHARSET,我用
char buf[100]={0};
DWORD dwStatusLen = 100;
bSuccess = ::HttpQueryInfo(hRequest, HTTP_QUERY_ACCEPT_CHARSET, buf, &dwStatusLen, NULL);

发现不行,怎么办?

谢谢!
...全文
389 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
whoo 2008-11-04
  • 打赏
  • 举报
回复
ERROR_HTTP_HEADER_NOT_FOUND
12150

The requested header could not be located.
south2000 2008-11-03
  • 打赏
  • 举报
回复
whoo,谢谢你。
我查询了HTTP_QUERY_ACCEPT_CHARSET、HTTP_QUERY_ACCEPT_ENCODING、HTTP_QUERY_CONTENT_ENCODING、HTTP_QUERY_CONTENT_TRANSFER_ENCODING、HTTP_QUERY_TRANSFER_ENCODING

发现bSuccess返回是FALSE,dwStatusLen的值是4000,用GetLastError()得到的是12150,bufAll里面是空的没有任何数据,每一个都是这样。
whoo 2008-10-31
  • 打赏
  • 举报
回复
貌似 HTTP_QUERY_ACCEPT_CHARSET 查询的是

Accept-Charset=

而不是

Charset=
south2000 2008-10-27
  • 打赏
  • 举报
回复
jameshooo,谢谢你。
我现在通过另外的方法得到了网页的编码,方法如下:
WCHAR bufAll[2000] = {0};
dwStatusLen = sizeof(bufAll);
bSuccess = ::HttpQueryInfo(hRequest, HTTP_QUERY_RAW_HEADERS_CRLF, bufAll, &dwStatusLen, NULL);
这个bSuccess返回是TRUE,然后我通过分析bufAll中的数据,find关键字"charset=",这样就得到了编码。
/////////////////////////////////////////////////////////////////////////


不过令我奇怪的是,如果使用HTTP_QUERY_ACCEPT_CHARSET,
bSuccess = ::HttpQueryInfo(hRequest, HTTP_QUERY_ACCEPT_CHARSET, bufAll, &dwStatusLen, NULL);
发现bSuccess返回是FALSE,dwStatusLen的值是4000,用GetLastError()得到的是12150,而bufAll里面是空的没有任何数据。

这是为什么啊?
谢谢!
jameshooo 2008-10-14
  • 打赏
  • 举报
回复
1、你没有说明不行是什么概念。是返回FALSE?如果是,用GetLastError()看看错误码
2、如果头信息里面没有这项,取不到也是正常的。
3、HttpQueryInfo支持ANSI和UNICODE两种版本,要视你的项目使用的是哪种字符编码,如果用的是UNICODE编码,那么你的用法就错了。最好使用TCHAR buf[100]

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧