У меня есть следующий код, который должен отправить POST-запрос к какой-либо службе и в основном опубликовать файл.
Этот запрос multipart/form-data
. И он состоит из:
Код ниже:
sendMultipartPost();
def sendMultipartPost()
{
def URLToGo = 'http://127.0.0.1:8080/sd/services/rest/find/';
def httpRequest = new HTTPBuilder(URLToGo);
def authToken = 'AR-JWT ' + 'TOKEN';
def headers = ['Authorization' : authToken, 'Content-Type' : 'multipart/form-data; boundary=W3NByNRZZYy4ALu6xeZzvWXU3NVmYUxoRB'];
httpRequest.setHeaders(headers);
def body = ["values":["Incident Number":'testSC',"Work Log Type":"General Information","Description":"File has been added TESTFile","z2AF Work Log01":'Test File title']];
httpRequest.request(Method.POST)
{
req ->
MultipartEntity multiPartContent = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, 'W3NByNRZZYy4ALu6xeZzvWXU3NVmYUxoRB', Charset.forName("UTF-8"));
Gson gson = new Gson();
String jsonObj = gson.toJson(body);
multiPartContent.addPart('entry', new StringBody(jsonObj, ContentType.APPLICATION_JSON));
multiPartContent.addPart('attach-z2AF Work Log01', new ByteArrayBody(Base64.encodeBase64("let's createBase64 let's createBase64 let's createBase64 let's createBase64 let's createBase64".getBytes()), ContentType.APPLICATION_OCTET_STREAM, 'test file title'));
req.setEntity(multiPartContent);
response.success = { resp ->
if (resp.statusLine.statusCode == 200) {
// response handling
}
}
response.failure = { resp, json ->
result = groovy.json.JsonOutput.toJson(['state':resp.status])
}
}
}
Однако всякий раз, когда яотправить запрос, кажется, что некоторые заголовки пропущены или не указаны:
Тело сгенерированного запроса
Но «идеальный» запрос выглядит так:
Идеальный запрос
Теперь мы можем заключить, что следующие заголовки JSON:
Content-Type
для JSON отсутствуют (хотя вы можете видеть,что первая часть, которая является json, имеет ContentType.APPLICATION_JSON
) charset
, не указывается автоматически Content-Transfer-Encoding
не указывается автоматически
По состоянию на base64:
Content-Transfer-Encoding
не указывается автоматически
Следовательно, у меня есть 2 вопроса:
- Почему заголовок
Content-Type
JSON отсутствует, хотя я на самом деле его установил? - Как указать заголовки, которых вообще нет?
Заранее спасибо