Katalon - 使用 POST API 上传文件
Katalon - Upload a file using POST API
我搜索过这个问题,似乎讨论了几次,但没有真正的解决方案。
我正在尝试使用 POST 请求和表单数据上传 XML 文件,但收到以下错误响应:
{
"error":"The results file is required."
}
错误显示使用 ObjectRepository 以及使用 withMultipartFormDataBodyContent()
的代码
如果我使用 curl,它工作正常。也适用于 Postman。
有人可以帮我解决这个问题吗?
谢谢。
经过很长一段时间的搜索和尝试不同的事情后,我已经找到了解决方案(对我有用)。它使用 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 中的内置功能目前(或者我不知道该怎么做)是不可能的。
我搜索过这个问题,似乎讨论了几次,但没有真正的解决方案。
我正在尝试使用 POST 请求和表单数据上传 XML 文件,但收到以下错误响应:
{
"error":"The results file is required."
}
错误显示使用 ObjectRepository 以及使用 withMultipartFormDataBodyContent()
如果我使用 curl,它工作正常。也适用于 Postman。
有人可以帮我解决这个问题吗?
谢谢。
经过很长一段时间的搜索和尝试不同的事情后,我已经找到了解决方案(对我有用)。它使用 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 中的内置功能目前(或者我不知道该怎么做)是不可能的。