Как сформировать тело в запросе вручную в Groovy - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть следующий пример запроса, который возвращает 201, как и ожидалось. Заголовки:

enter image description here

И само тело основного запроса выглядит так: enter image description here Проблема в том, что этот запросимеет тип содержимого multipart/from-data. Я никогда не работал с этим. Итак, основной запрос на самом деле содержит два меньших, которые имеют свои собственные дублирующие заголовки. Я понятия не имею, как построить это с заводной. Также мне нужно передать заголовки Authorization и Content-Type в основной запрос. Что я должен делать? Есть ли способ вручную сформировать тело со всеми заголовками? Если да, то как мне построить его, используя RESTClient?

в Groovy. Я бы хотел сделать что-то вроде:

def http = new HTTPBuilder("URL");

def token = "mytoken";

http.setHeader("Authorization", auth);
http.setContentType("multipart/form-data; boundary=W3NByNRZZYy4ALu6xeZzvWXU3NVmYUxoRB");

http.request(Method.POST) {

MultipartEntity jsonEntity = new MultipartEntity();
jsonEntity.addPart("", new JSONObject("{"values":{"Incident Number":"INC000036078321","Work Log Type":"General Information","Description":"test","z2AF Work Log01":"book.xlsx"}}")) //nevermind escaping

jsonEntity.setHeader("Content-Disposition", "form-data");
jsonEntity.setHeader("name", "entry");
jsonEntity.setHeader("Content-Type", "form-data");
jsonEntity.setHeader("Content-Disposition", "application/json");
jsonEntity.setHeader("charset", "UTF-8");
jsonEntity.setHeader("Content-Transfer-Encoding", "8bit");


MultipartEntity base64Entity = new MultipartEntity();
base64Entity.addPart("", "loooooooooooooooooonng base64");

base64Entity.setHeader("Content-Disposition", "form-data");
base64Entity.setHeader("name", "attach-z2AF Work Log01");
base64Entity.setHeader("filename", "book.xlsx");
base64Entity.setHeader("Content-Type", "application/octet-stream");
base64Entity.setHeader("Content-Transfer-Encoding", "base64");

http.addMultipartEntity(jsonEntity);
http.addMultipartEntity(base64Entity);


        response.success = { resp, json ->
            result = json;
        }
}

Но, к сожалению, я не могу этого сделать, потому что нет setHeader для MultipartEntity и addMultipartEntity для HTTPBuilder. Как я могу это сделать?

Спасибо заранее.

...