【问题标题】:Katalon - Upload a file using POST APIKatalon - 使用 POST API 上传文件
【发布时间】:2020-09-24 22:24:53
【问题描述】:

我已经搜索过这个问题,似乎讨论过几次,但没有真正的解决方案。

我正在尝试使用 POST 请求和表单数据上传 XML 文件,但收到以下错误响应:

{
  "error":"The results file is required."
}

错误显示使用 ObjectRepository 以及使用 withMultipartFormDataBodyContent() 的代码

如果我使用 curl,它可以正常工作。也适用于 Postman。

有人可以帮我解决这个问题吗?

谢谢。

【问题讨论】:

  • 欢迎来到 SO!您已经完成了研究,最好在您的问题中包含几个链接,以帮助那些前来帮助您并供将来参考的人。也许,尝试发布一些代码来显示你在做什么,也许它有助于突出问题
  • 嗨!谢谢你的建议,你是对的。不是借口,但我已经厌倦了寻找,我不想再写任何东西了嘿嘿。下次我会发布一些代码,但实际上我自己找到了解决方案。我会回答我自己的帖子,以防其他人需要它。再次感谢!

标签: api file post katalon-studio katalon


【解决方案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 的内置功能目前(或者我不知道该怎么做)是不可能的。

【讨论】:

    猜你喜欢
    • 2019-02-05
    • 2018-01-05
    • 2020-05-11
    • 2020-12-14
    • 2013-10-30
    • 2012-06-18
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多