积极答复者
如何接收HTTP应答报文?

问题
答案
-
CHttpFile::QueryInfo()
Call this member function to return response or request headers from an HTTP request.
详细用法请参看MSDN文档
http://msdn.microsoft.com/zh-cn/library/84d9ybyh(v=vs.80).aspx
Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.- 已标记为答案 Ptolemaeus 2011年7月7日 4:08
-
最后
我是这样解决的
char dwStatus[11000];//大小由你的内容大小决定QuerInfo你能查的
DWORD dwBuffLen = sizeof(dwStatus);
pHTTP->Read(&dwStatus,dwBuffLen);//此后pHTTP里就是你要的内容了。pHTTP是CHttpFile型的- 已标记为答案 Ptolemaeus 2011年7月7日 4:08
全部回复
-
我已经用HTTP Post发送了一些图片到某网站,该网站会返回一个http 200的应答报文,我怎么在我的程序里接收这个电文,并且分析其中附加的信息呢?
发送的程序基本如下
pHttpConnection = Session.GetHttpConnection(defServerName,nPort);
pHTTP = pHttpConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, defObjectName);
pHTTP->AddRequestHeaders(strRequestHeader);
pHTTP->SendRequestEx(dwTotalRequestLength, HSR_SYNC | HSR_INITIATE);就是用这类方法发出去的,用什么接收呢?recv?该怎么用呢?
- 已合并 VisualElevenModerator 2011年7月7日 0:17 相同的问题
-
CHttpFile::QueryInfo()
Call this member function to return response or request headers from an HTTP request.
详细用法请参看MSDN文档
http://msdn.microsoft.com/zh-cn/library/84d9ybyh(v=vs.80).aspx
Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.- 已标记为答案 Ptolemaeus 2011年7月7日 4:08
-
看了您的指导后,我是这样写的,
pHttpConnection = Session.GetHttpConnection(defServerName,nPort);
pHTTP = pHttpConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, defObjectName);
pHTTP->AddRequestHeaders(strRequestHeader);
pHTTP->SendRequestEx(dwTotalRequestLength, HSR_SYNC | HSR_INITIATE);.
.
.
DWORD dwStatus=0;
DWORD dwBuffLen = sizeof(dwStatus);
DWORD dwIndex = HTTP_QUERY_CONTENT_LENGTH;
pHTTP->QueryInfo(HTTP_QUERY_URI,(void*)&dwStatus,&dwBuffLen,&dwIndex);
pHTTP->EndRequest(HSR_SYNC);但dwStatus里的值就没变过,一直是0,是怎么回事啊?
-
- pHTTP->QueryInfo(HTTP_QUERY_URI,(void*)&dwStatus,&dwBuffLen,&dwIndex);
- 用getlasterror()取上一行代码的异常,返回12019
- 是不是我的pHTTP用的不对,应该单独定义一个CHttpFile类型的对象,用这个对象去接收下返回的报文?
- 如何接收返回报文呢?
- ps:
- ERROR_INTERNET_INCORRECT_HANDLE_STATE
-
- 12019
-
The requested operation cannot be carried out because the handle supplied is not in the correct state.
-
后来我改成这样:
//代码省略
pHTTP->EndRequest(HSR_SYNC);
DWORD dwStatus=0;
DWORD dwBuffLen = sizeof(dwStatus);
int ErrorMsg = pHTTP->QueryInfo(HTTP_QUERY_STATUS_TEXT,(void*)&dwStatus,&dwBuffLen);
int ErrorStas = GetLastError();
cout <<dwStatus<<"."<<endl;这里dwStatus得到了值,getlasterror也没报错,但我的返回报文里是一个很长的字符串,我怎么取到呢?
QueryInfo当参数是CString好像有bug,总是报assert错误
-
最后
我是这样解决的
char dwStatus[11000];//大小由你的内容大小决定QuerInfo你能查的
DWORD dwBuffLen = sizeof(dwStatus);
pHTTP->Read(&dwStatus,dwBuffLen);//此后pHTTP里就是你要的内容了。pHTTP是CHttpFile型的- 已标记为答案 Ptolemaeus 2011年7月7日 4:08