Katalon - Загрузить файл с помощью POST API
Я искал эту проблему и, кажется, ее обсуждали пару раз, но без реального решения.
Я пытаюсь загрузить файл XML, используя запрос POST и данные формы, но получаю следующий ответ об ошибке:
{
"error":"The results file is required."
}
Ошибка отображается с использованием ObjectRepository, а также с помощью кода, использующего с
withMultipartFormDataBodyContent()
Если я использую curl, он отлично работает. Также отлично работает с почтальоном.
Может кто-нибудь помочь мне с этим?
Благодарю.
1 ответ
После looooooooooooong времени на поиск и пробу разных вещей я уже нашел решение (которое работает для меня). Он использует библиотеку Okhttp, поэтому вам нужно будет ее импортировать. Если кому-то еще это нужно, вот оно:
public void importJUnitTestExecRequest() {
OkHttpClient client = new OkHttpClient();
String reportFile = GlobalVariable.reportFolder + "\\JUnit_Report.xml";
File file = new File(reportFile);
String url = GlobalVariable.importTestExecJUnitEndpoint+"?testExecKey="+GlobalVariable.testExecKey;
//Form request body that will be a multipart
RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse("text/xml"), file))
.build();
//Form the actual request adding necessary headers
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.addHeader("Content-Type", GlobalVariable.contentTypeMultipart)
.build();
Response response = null;
try {
response = client.newCall(request).execute();
println("************ IMPORT TEST EXECUTION RESULTS RAW RESPONSE ************");
println("Response status: " + response);
println("********************************************************************");
if (response.isSuccessful()){
String responseBody = response.body().string();
println("************ IMPORT TEST EXECUTION RESULTS RESPONSE BODY ************");
println(responseBody);
println("*********************************************************************");
} else {
throw new IOException("Unexpected HTTP code " + response);
}
} catch (IOException e) {
e.printStackTrace();
}
}
Я открыл заявку в службу поддержки, потому что со встроенной функциональностью в Katalon в настоящее время (или я не знаю, как это сделать) невозможно.