Я написал интерфейс для использования API службы поддержки JIRA.Один из реализованных мной вызовов REST API выполняет HTTP POST multipart / form-data.Это работает нормально, когда я использую HTTP, однако, когда я использую HTTPS, я получаю ответ 411 Length Required
.
Команда вызова REST API отлично работает по HTTPS, когда я использую curl или почтальон.
Isчто-то мне не хватает при использовании HTTPS?
мой почтовый индекс выглядит следующим образом:
// generic form send
RESTClient::Error RESTClient::HTTPFormSend(
const std::string & method,
const std::string & command,
const Params & headerParams,
Poco::Net::HTMLForm & form,
HTTPRequestSetup requestFunc
)
{
Error ret = Error::None;
try
{
Poco::Net::HTTPRequest request;
Poco::SharedPtr<Poco::Net::HTTPClientSession> pSession(PrepareSession(method, command, headerParams, request));
Poco::Net::HTTPResponse httpResponse;
// authenticate
m_credentials.authenticate(request);
// custom request setup
if (requestFunc)
requestFunc(request);
if (!DoFormRequest(pSession, request, httpResponse, form))
{
m_credentials.authenticate(request);
if (!DoFormRequest(pSession, request, httpResponse, form))
{
m_logger.error("Invalid username or password");
}
}
}
catch (const Poco::Exception &ex)
{
m_logger.error(ex.displayText());
ret = Error::Internal;
}
return ret;
}
// send form
bool RESTClient::DoFormRequest(
Poco::Net::HTTPClientSession *pSession,
Poco::Net::HTTPRequest & request,
Poco::Net::HTTPResponse & response,
Poco::Net::HTMLForm &form
)
{
Poco::LogStream logStream(m_logger);
form.prepareSubmit(request);
pSession->setTimeout(Poco::Timespan(20, 0));
form.write(pSession->sendRequest(request));
return ProcessResponse(pSession, response);
}