Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HP ALM文件附件_Java_Attachment_Multipart_Rest Assured_Alm - Fatal编程技术网

Java HP ALM文件附件

Java HP ALM文件附件,java,attachment,multipart,rest-assured,alm,Java,Attachment,Multipart,Rest Assured,Alm,我正在用Java中的REST assured实现hp alm的API自动化。我正在尝试将附件上载到已创建的运行实例 urlheaders.put(“内容类型”、“多部分/表单数据”); File File=新文件(“H:\\Desktop\\a.zip”); RequestSpecification httpRequest14=RestAssured.given().headers(urlheaders).cookies(loginCookies).cookies(sessionookies).

我正在用Java中的REST assured实现hp alm的API自动化。我正在尝试将附件上载到已创建的运行实例

urlheaders.put(“内容类型”、“多部分/表单数据”);
File File=新文件(“H:\\Desktop\\a.zip”);

RequestSpecification httpRequest14=RestAssured.given().headers(urlheaders).cookies(loginCookies).cookies(sessionookies).multiPart(“文件”,文件,“multiPart/form数据”); 响应附件=httpRequest14.request(方法.POST,“/qcbin/rest/domains/d/projects/p/runs/13634/attachments”); 字符串attachmentResponseBody=attachment.getBody().asString(); //logger.info(“附件响应主体为=>”+附件响应主体); statusCode=附件。getStatusCode(); logger.info(“收到的附件状态代码:“+statusCode”);
状态代码为500,错误为:

应提供文件名和内容

这个错误意味着什么?有人能说出我的代码有什么问题吗


应提供文件名和内容
异常Id:
qccore.general-error

除了使用rest assured获得所需的输出外,还有其他方法吗?

如果多部分请求不正确,则至少需要提供两部分:一部分包含文件名,另一部分包含文件本身

或者您可以使用
应用程序/octet流内容类型
。 请参见中的示例

编辑:工作代码:
RestAssured.given().headers(urlheaders).cookies(loginCookies).cookies(sessionookies).body(文件)
和URL标头必须包含:

  • 内容类型=应用程序/八位字节流
  • Slug=文件名
根据Sergi的建议, 解决办法是:

                    File file = new File(filePath);
                    urlheaders.put("slug", file.getName());
                    RequestSpecification httpRequest14 = RestAssured.given().headers(urlheaders).cookies(loginCookies).cookies(sessionCookies).body(file);
                    Response attachment = httpRequest14.request(Method.POST,"/qcbin/rest/domains/"+domain+"/projects/"+project+"/runs/"+stepID+"/attachments");
                    String attachmentResponseBody = attachment.getBody().asString();
                    logger.info("attachment Response Body is =>  " + attachmentResponseBody);
                    statusCode = attachment.getStatusCode();
                    logger.info("The attachment status code recieved: " + statusCode);

This will add the attachment to the run instance.
Thank You Sergi

我已经看了官方文件,但不能完全理解。根据我的理解,我已经编写了上述代码。你能详细说明一下怎么做吗?感谢您没有使用Restasured,但一般来说,您需要传递'Content Type'头=='application/octet stream','Slug'==文件名并将您的文件放入请求正文我要上载的文件将包括AUT的屏幕截图,以及如何将文件放入正文??除了放心之外,我们如何上传附件??可能,正文(新文件(“…”)?RequestSpecification httpRequest14=RestAssured.given().headers(urlheaders).cookies(loginCookies).cookies(sessionCookies).多部分(“文件”,文件,“多部分/表单数据”).body(文件);正如u所说,在对请求进行更改之后,现在它给出了415个错误代码-不支持的媒体类型。任何其他上传文件的方法,除rest assured外