InternetGetLastResponseInfo返回奇怪的字符,而不是错误消息

InternetGetLastResponseInfo returns strange characters instead of error message

本文关键字:错误 消息 字符 返回 InternetGetLastResponseInfo      更新时间:2023-10-16

我在调用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☺?.

谢谢。

您对IntergetGetLastResponseInfo的第二次调用错误;您没有按要求传递缓冲区的长度。您进行的第一次调用检索所需缓冲区的大小,但在第二次调用时,您仍然必须告诉函数缓冲区有多大。(还要注意的是,文档中说,第一次调用中返回的值不包括终止零的空间。)

InternetGetLastResponseInfo(&error, NULL, &bufferLength);
buffer = malloc(bufferLength + 1);
InternetGetLastResponseInfo(&error, buffer, &bufferLength);

有关更多信息,请参阅InternetGetLastReponseInfo文档。