我正在研究一个程序,它需要在加载之前检查页面是否存在(所以没有太多异国情调).
一切正常,但我无法让HttpQueryInfo返回页面的有效状态代码.返回的状态代码是:1875378224
产生问题的代码:
DWORD headerBuffSize = sizeof(DWORD);
DWORD statusCode;
//Check existance of page (for 404 error)
if(!HttpQueryInfo(hRequestHandle,
HTTP_QUERY_STATUS_CODE,
&statusCode,
&headerBuffSize,
NULL))
return 4;
if(statusCode == HTTP_STATUS_NOT_FOUND)
cout << "We got a 404 error" << endl;
cout << "Got Status code: " << statusCode << endl; //1875378224 everywhere
cout << "404 status code: " << HTTP_STATUS_NOT_FOUND << endl; //What it should be getting
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做; 我已将自己的代码与在线的几个示例进行了比较,看起来它应该可以工作,尽管我可能只是犯了一个愚蠢的错误.
谢谢!
Ste*_*uan 10
HttpQueryInfo的Microsoft文档提示您可以使用提供的DWORDfor .以下代码段显示了如何:HTTP_QUERY_STATUS_CODEHTTP_QUERY_FLAG_NUMBER
DWORD statusCode = 0;
DWORD length = sizeof(DWORD);
HttpQueryInfo(
hRequestHandle,
HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,
&statusCode,
&length,
NULL
);
Run Code Online (Sandbox Code Playgroud)
从响应标头中检索的信息HttpQueryInfo始终是文本字符串.
int statusCode;
char responseText[256]; // change to wchar_t for unicode
DWORD responseTextSize = sizeof(responseText);
//Check existance of page (for 404 error)
if(!HttpQueryInfo(hRequestHandle,
HTTP_QUERY_STATUS_CODE,
&responseText,
&responseTextSize,
NULL))
return 4;
statusCode = atoi(responseText);
Run Code Online (Sandbox Code Playgroud)