none
С++ Как отправить картинку в телеграмм используя wininet ? RRS feed

  • Общие обсуждения

  • Данный код к сожалению не работает, в чём проблема ?

    wstring postRequest(wstring url, wstring path, file data) { HINTERNET hInternet, hConnect, hRequest; hInternet = InternetOpenW(L"TERNICK OWL", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (hInternet != NULL) { hConnect = InternetConnectW(hInternet, url.data(), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1u); if (hConnect != NULL) { hRequest = HttpOpenRequestW(hConnect, L"POST", path.data(), NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_RELOAD, 1); if (hRequest != NULL) { HttpAddRequestHeaders(hRequest, hdrs, -1, HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD); INTERNET_BUFFERS bufferIn; memset(&bufferIn, 0, sizeof(INTERNET_BUFFERS)); bufferIn.dwStructSize = sizeof(INTERNET_BUFFERS); bufferIn.dwBufferTotal = wcslen(head) + data.l + wcslen(tail); BOOL bSend = HttpSendRequestExW(hRequest, &bufferIn, NULL, HSR_INITIATE, 0); if (bSend) { LPDWORD written = 0; InternetWriteFile(hRequest, head, wcslen(head), written); InternetWriteFile(hRequest, data.data, data.l, written); InternetWriteFile(hRequest, tail, wcslen(tail), written); HttpEndRequest(hRequest, NULL, HSR_INITIATE, 0); } if (bSend) { DWORD dwSize = 0; wstring result; wchar_t *buff = new wchar_t[256]; do { memset(buff, 0, 256); InternetReadFile(hRequest, buff, sizeof(buff) - 1, &dwSize); result.append(buff, dwSize); } while (dwSize != 0); delete[] buff; InternetCloseHandle(hRequest); InternetCloseHandle(hConnect); InternetCloseHandle(hInternet); return result; } else { InternetCloseHandle(hRequest); InternetCloseHandle(hConnect); InternetCloseHandle(hInternet); } } else { InternetCloseHandle(hRequest); InternetCloseHandle(hConnect); InternetCloseHandle(hInternet); } } else { InternetCloseHandle(hConnect); InternetCloseHandle(hInternet); } } else { InternetCloseHandle(hInternet); } return L""; }


    15 сентября 2020 г. 19:59

Все ответы

  • Добавьте обработку ошибок, чтобы можно было понять, что именно не работает

    BOOL bSend = HttpSendRequestExW(hRequest, &bufferIn, NULL, HSR_INITIATE, 0);
    if (bSend) {
    	//...
    }
    
    else {
    
         printf("HttpSendRequestExW failed: %u",GetLastError());
    
    }


    16 сентября 2020 г. 3:31
  • Здравствуйте,

    Вам удалось установить, что в коде не работает?


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    1 октября 2020 г. 8:23
    Модератор