HTTP_QUERY_CONTENT_LENGTH,
CntLenBuff,
&dwquerybuflen,NULL);
我想获取http头的Content-Length,但是在查看内存时发现,CntLenBuff里面的内容是两部分,如果Content-Length是20,那么CntLenBuff数组的内容就是“2.0."和”20“,dwquerybuflen值是4。也就是说,既有宽字节的字符串,也有单字节字符串,而我的http头里Content-Length: 20是单字节写入的,谁知道为何会同时存在宽字节字符串和单字节字符串?如果我想获得long型或int型的Content-Length具体数值,接下来该怎么做?
5 个解决方案
#1
DWORD dwBuffer = 0;
DWORD dwSize = sizeof(dwBuffer);
if (!HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, (LPVOID)&dwBuffer , &dwSize , NULL))
{
// ...
}
这样 ??
#2
好吧,虽然直接看版主的代码还是不太明白,不过我搜索HTTP_QUERY_FLAG_NUMBER
找到了http://bbs.csdn.net/topics/390112783,
dwBuffer 直接就是接收长度,不过为何这帖子里新申请的数组长度是+1呢?
char* buffer = new char[dwFileSize+1] ; +1是为了得到"\0"还是什么呢?有什么要注意的?
#3
是的,一般是为空字符'\0'准备的。
#4
可是为何我在
里面设定rcvCount = dwFileSize+1后就僵死了?如果rcvCount = dwFileSize不+1则能正常收完。
long rcvCount = dwFileSize+1;//此处设定接收总长为Content-Length+1
BOOL GetDatasucc ;
int nLeft = rcvCount;
int idx=0;
while(nLeft>0)//rcvBuffer是一个足够大的数组
{
GetDatasucc = InternetReadFile(hRequest,&rcvBuffer[idx],nLeft,&dwReaded);
Sleep(1);
if (!GetDatasucc)
{
dwErrorCode=GetLastError();
cout<<"2nd_Recieve_GetError_InternetReadFile: "<<dwErrorCode<<endl;
goto ERRORCODE;
}
idx+=dwReaded;
nLeft-=dwReaded;
}
#5
版主在否?
#1
DWORD dwBuffer = 0;
DWORD dwSize = sizeof(dwBuffer);
if (!HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, (LPVOID)&dwBuffer , &dwSize , NULL))
{
// ...
}
这样 ??
#2
好吧,虽然直接看版主的代码还是不太明白,不过我搜索HTTP_QUERY_FLAG_NUMBER
找到了http://bbs.csdn.net/topics/390112783,
dwBuffer 直接就是接收长度,不过为何这帖子里新申请的数组长度是+1呢?
char* buffer = new char[dwFileSize+1] ; +1是为了得到"\0"还是什么呢?有什么要注意的?
#3
是的,一般是为空字符'\0'准备的。
#4
可是为何我在
里面设定rcvCount = dwFileSize+1后就僵死了?如果rcvCount = dwFileSize不+1则能正常收完。
long rcvCount = dwFileSize+1;//此处设定接收总长为Content-Length+1
BOOL GetDatasucc ;
int nLeft = rcvCount;
int idx=0;
while(nLeft>0)//rcvBuffer是一个足够大的数组
{
GetDatasucc = InternetReadFile(hRequest,&rcvBuffer[idx],nLeft,&dwReaded);
Sleep(1);
if (!GetDatasucc)
{
dwErrorCode=GetLastError();
cout<<"2nd_Recieve_GetError_InternetReadFile: "<<dwErrorCode<<endl;
goto ERRORCODE;
}
idx+=dwReaded;
nLeft-=dwReaded;
}
#5
版主在否?