簡體   English   中英

HttpSendRequest 12005錯誤

[英]HttpSendRequest 12005 error

我有一個微型程序,可以將文件上傳到服務器上。 為了進行測試,我使用了自己的由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;
}

PHP腳本

<?php
$uploaddir = './'; // Relative Upload Location of data file

if (is_uploaded_file($_FILES['uploadedfile']['tmp_name'])) {
$uploadfile = $uploaddir . basename($_FILES['uploadedfile']['name']);
echo "File ". $_FILES['uploadedfile']['name'] ." uploaded successfully. ";
if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully moved. ";
}

else
print_r($_FILES);
}

else {
echo "Upload Failed!!!";
print_r($_FILES);
}
?>

lpszServerName參數應該是主機名,而不是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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM