在调用FtpOpenFile之后我正在使用以下代码:
error=GetLastError();
if(error!=0)
{
if(error==ERROR_INTERNET_EXTENDED_ERROR)
{
InternetGetLastResponseInfo(&error,NULL,&bufferLength);
buffer=malloc(bufferLength);
InternetGetLastResponseInfo(&error,buffer,NULL);
printf("FtpOpenFile error : %s.\n",buffer);
}
else
{
printf("FtpOpenFile error : %d.\n",(int)error);
}
}
我确认错误= ERROR_INTERNET_EXTENDED_ERROR,但不是打印像
这样的东西FtpOpenFile错误:服务器拒绝了该请求,因为它对您有个人不喜欢,或者换句话说是一种微妙的仇恨。
它给了我
FtpOpenFile错误:x☺?。
感谢。
答案 0 :(得分:1)
你对IntergetGetLastResponseInfo
的第二次电话是错误的;你没有按要求传递缓冲区的长度。您调用的第一个调用将检索所需缓冲区的大小,但您仍需要告诉函数第二次调用它时缓冲区的大小。
(另请注意,文档说第一次调用中返回的值不包括终止零的空间。)
InternetGetLastResponseInfo(&error, NULL, &bufferLength);
buffer = malloc(bufferLength + 1);
InternetGetLastResponseInfo(&error, buffer, &bufferLength);
有关详细信息,请参阅InternetGetLastReponseInfo
documentation。