Php HttpSendRequest 12005错误

Php HttpSendRequest 12005错误,php,c++,upload,Php,C++,Upload,我有一个小程序,可以将文件上传到服务器上。出于测试目的,我使用了我自己的本地服务器,它是由WebAmp软件创建的。我的程序将使用一个PHP脚本上传文件,该脚本将接受程序中的文件,并将它们存储到指定位置的服务器上。现在我很困惑,我必须把这个PHP文件放在我的系统中,这样我的程序才能与这个脚本交互并成功地发送文件。这是我的密码 int main() { static TCHAR frmdata[] = "-----------------------------7d82751e2bc085

我有一个小程序,可以将文件上传到服务器上。出于测试目的,我使用了我自己的本地服务器,它是由WebAmp软件创建的。我的程序将使用一个PHP脚本上传文件,该脚本将接受程序中的文件,并将它们存储到指定位置的服务器上。现在我很困惑,我必须把这个PHP文件放在我的系统中,这样我的程序才能与这个脚本交互并成功地发送文件。这是我的密码

int main()
{

    static TCHAR frmdata[] = "-----------------------------7d82751e2bc0858\r\nContent-Disposition: form-data; name=\"uploadedfile\"; filename=\"D:\\er.txt\"\r\nContent-Type: text/plain\r\n\r\nfile contents  here\r\n-----------------------------7d82751e2bc0858--\r\n";
    static TCHAR hdrs[] = "Content-Type: multipart/form-data; boundary=---------------------------7d82751e2bc0858"; 

    HINTERNET hSession = InternetOpen("MyBrowser",INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
     if(!hSession)
    {
     cout<<"Error: InternetOpen";  
    }


    HINTERNET hConnect = InternetConnect(hSession, _T("http://localhost"),INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
     if(!hConnect)
    {
     cout<<"Error: InternetConnect";  
    }

    //HINTERNET hRequest = HttpOpenRequest(hConnect, (const char*)"POST",_T("upload.php"), NULL, NULL, (const char**)"*/*\0", 0, 1);
    LPCTSTR rgpszAcceptTypes[] = {_T("*/*"), NULL};
    HINTERNET hRequest = HttpOpenRequest(hConnect, (const char*)"POST",
                                     _T("upload.php"), NULL, NULL,
                                     rgpszAcceptTypes, 0, 1);
    if(hRequest==NULL)
    {
     cout<<"Error: HttpOpenRequest";  
    }

    BOOL sent= HttpSendRequest(hRequest, hdrs, strlen(hdrs), frmdata, strlen(frmdata));
    if(!sent)
    {
     cout<<"Error: HttpSendRequest "<<GetLastError();
     }


    //close any valid internet-handles
    InternetCloseHandle(hSession);
    InternetCloseHandle(hConnect);
    InternetCloseHandle(hRequest);
    getchar();
    return 0;
}
intmain()
{
静态TCHAR frmdata[]=“------------------------------------7d82751e2bc0858\r\n内容处理:表单数据;名称=\“uploadedfile\”;文件名=\“D:\\r.txt\”\r\n内容类型:text/plain\r\n\r\n此处文件内容\r\n-----------------7d82751e2bc0858-\r\n”;
静态TCHAR hdrs[]=“内容类型:多部分/表单数据;边界=------------------------------------7d82751e2bc0858”;
HINTERNET hSession=互联网开放(“MyBrowser”,互联网开放类型,空,空,0);
如果(!hs会话)
{

coutlpszServerName参数应该是主机名,而不是URL

更改<代码>http://localhost
只需
localhost

将此代码放在
HTTPSendRequest
下面,以打印响应标题和内容

//Print the first 2k of the response headers and content
char buffer[2048] = {};
DWORD bufferSize = sizeof(buffer);
BOOL success = HttpQueryInfo(hRequest, HTTP_QUERY_RAW_HEADERS_CRLF, buffer, &bufferSize, NULL);
if(!success)
{
    std::cout<<"Error: HttpQueryInfo "<< GetLastError();
    return 0;
}
std::cout << buffer << std::endl;

ZeroMemory(buffer, sizeof(buffer));
success = InternetReadFile(hRequest, buffer, sizeof(buffer), &bufferSize); 
if(!success)
{
    std::cout << "Error: InternetReadFile " << GetLastError();
    return 0;
}
std::cout << buffer << std::endl;
//打印响应头和内容的前2k
字符缓冲区[2048]={};
DWORD bufferSize=sizeof(缓冲区);
BOOL success=HttpQueryInfo(hRequest、HTTP\u QUERY\u RAW\u HEADERS\u CRLF、buffer和bufferSize,NULL);
如果(!成功)
{

std::coutw当我这样做时,没有显示任何输出..当我按enter按钮时,控制台窗口消失您希望得到什么输出?除非出现错误,否则您没有输出。如果您想检索任何数据,您可能希望使用
InternetReadFile
来检索,或者
HttpQueryInfo
来获取状态代码或响应,他会aders.要成为一个正确的程序,或者当它工作正常没有任何错误时,它必须将该文件保存在我电脑中的某个位置。但是当我搜索该文件时,它只显示原始文件而不是上载的文件…这意味着我的程序仍然存在一些错误。我建议的更改是修复您的12005错误。如果您添加我刚才添加的代码对于答案,它可能会帮助您调试未上载正确数据的原因。
//Print the first 2k of the response headers and content
char buffer[2048] = {};
DWORD bufferSize = sizeof(buffer);
BOOL success = HttpQueryInfo(hRequest, HTTP_QUERY_RAW_HEADERS_CRLF, buffer, &bufferSize, NULL);
if(!success)
{
    std::cout<<"Error: HttpQueryInfo "<< GetLastError();
    return 0;
}
std::cout << buffer << std::endl;

ZeroMemory(buffer, sizeof(buffer));
success = InternetReadFile(hRequest, buffer, sizeof(buffer), &bufferSize); 
if(!success)
{
    std::cout << "Error: InternetReadFile " << GetLastError();
    return 0;
}
std::cout << buffer << std::endl;