首页 > 解决方案 > HP ALM 文件附件

问题描述

我正在使用 Java 中的 REST 保证 hp-alm 的 API 自动化。我正在尝试将附件上传到创建的运行实例。

urlheaders.put("Content-Type", "multipart/form-data");
File file = new File("H:\\Desktop\\a.zip");
RequestSpecification httpRequest14 = RestAssured.given().headers(urlheaders).cookies(loginCookies).cookies(sessionCookies).multiPart( "file", file, "multipart/form-data");
Response attachment = httpRequest14.request(Method.POST,"/qcbin/rest/domains/d/projects/p/runs/13634/attachments");
String attachmentResponseBody = attachment.getBody().asString();
//logger.info("attachment Response Body is =>  " + attachmentResponseBody);
statusCode = attachment.getStatusCode();
logger.info("The attachment status code recieved: " + statusCode);

状态码为 500,错误为:

应提供文件名和内容。

错误是什么意思?谁能告诉我的代码有什么问题?

<div id="content-holder">
    <h1>File name and content should be supplied</h1>
    <div>
        <tr>
            <td><a id="exception-id-title">Exception Id:</a></td>
            <td>qccore.general-error</td>
        </tr>
    </div>
</div>

除了使用放心来获得所需的输出之外,还有其他方法吗?

标签: javaattachmentmultipartrest-assuredalm

解决方案


您的多部分请求不正确,您至少需要提供两部分:一是包含文件名,一是包含文件本身。

或者,您可以application/octet-stream Content-Type改用。请参阅官方文档中的示例。

编辑:工作代码:RestAssured.given().headers(urlheaders).cookies(loginCookies).cookies(sessionCookies).body(file); 并且 urlheaders 必须包含:

  • 内容类型 = 应用程序/八位字节流
  • 蛞蝓=文件名

推荐阅读