В настоящее время я пишу HTTP-клиент для выполнения HTTP-POST по URL-адресу, который возвращает HTTP-ответ.Как сообщить HTTP-серверу, что он не отправляет закодированную кодировку
Тем не менее, для сообщений об ошибках 400 и 500 он отправляет обратно не ответивший HTTP-ответ, а для сообщений о успехе - 201, он отправляет ответный ответ.
В запросе устанавливаю длину контента, поэтому я не уверен, почему он по-прежнему отправляет нам закодированную кодировку передачи. Есть ли какой-либо другой заголовок, который я могу задать в запросе, который будет сообщать HTTP-серверу о том, чтобы не отправлять закодированную кодировку?
headerList.append("POST /v2/charges HTTP/1.1")
headerList.append("Content-Type: application/json")
headerList.append("host: xxxxxxxxx")
headerList.append("request-id: ABCD001123")
headerList.append("Content-length: %d" %len(Msg))
hostReqHeader = "\r\n".join(headerList)
reqData = hostReqHeader + '\r\n\r\n' + qbPosMsg
Я использую сокеты для отправки этих HTTP-сообщений, а не с помощью библиотеки httplib или запросов.
Плохая новость: [RFC7230, ¶4.1] (http://tools.ietf.org/html/rfc7230#section-4.1), "* Получатель ДОЛЖЕН быть в состоянии разобрать и декодировать кодировку с перекосом . * «Таким образом, нет общего стандартного способа предотвращения кодирования с чередованием. Я полагаю, что может быть какой-то способ, характерный для вашего сервера и вне рамок стандарта. Какой сервер вы используете? –
См. Также ¶4.3, "* Клиент НЕ ДОЛЖЕН посылать имя кодированного кодированного перевода в TE, chunked всегда приемлемо для получателей HTTP/1.1. *" –