【问题标题】:How to add header in Rest aussured pf RestTemplate如何在 RestTemplate 的放心中添加标头
【发布时间】:2019-11-18 21:46:45
【问题描述】:

我一直在尝试使用 resttemplate 或 Restassured 库来自动化一些 API 测试,但我在发布请求时遇到了问题。我似乎无法弄清楚如何处理这个问题。我不断收到 415 unsupported type error ,我已经尝试了很多想法并阅读了数百个线程。如果有人有解决方案,请告诉我。 这是开发者代码

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public Response postData(@FormDataParam("file") InputStream is,
                         @FormDataParam("file") FormDataContentDisposition fileName,
                         @FormDataParam("checkInCommInfoInput") String checkInCommInfoInput,
                         @HeaderParam("authorization") String authString) { }

这是我尝试使用 resttemplate 字符串 addURI = "https://myURI"; HttpHeaders 标头 = 新的 HttpHeaders();

    //headers.add("Accept","*/*");
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.add("Authorization", " a values will be here ");



     System.out.println("**************************"+headers.getContentType());

    String jsonBody = "my json file will be here";
    //System.out.println("\n\n" + jsonBody);
    HttpEntity<String> entity = new HttpEntity<String>(jsonBody, headers);

    //POST Method to Add New Employee
    response = this.restTemplate.postForEntity(addURI, entity, String.class);
    responseBodyPOST = response.getBody();
    // Write response to file
    responseBody = response.getBody().toString();

我对 RestAssured 的尝试

        RestAssured.useRelaxedHTTPSValidation();
    RestAssured.baseURI ="https://myURI";

    EncoderConfig encoderconfig = new EncoderConfig();
     Response response = RestAssured.given()

                .header("Content-Type","application/json" )

                .header("Authorization", "a vvalues will be here")
                .header("Accept",ContentType.JSON )
               .config(RestAssured.config()
                       .encoderConfig(encoderconfig.appendDefaultContentCharsetToContentTypeIfUndefined(false)))
                //.contentType(ContentType.JSON)

               // .accept("application/json")
                .log().all().body(jsonBody).post()
                .then()
                   .assertThat()
                   .log().ifError()
                   .statusCode(200)
                   .extract().response();

     System.out.println("-------------"+ response.getBody().asString());

【问题讨论】:

    标签: automated-tests resttemplate rest-assured web-api-testing


    【解决方案1】:

    API 正在测试@Consumes(MediaType.MULTIPART_FORM_DATA),但测试发送内容为.header("Content-Type","application/json" )

    415 错误,正如您明确提到的 unsupported type error 测试客户端发送的正文内容与 API 接受的内容类型不匹配。

    请参阅这篇博文:https://blog.jayway.com/2011/09/15/multipart-form-data-file-uploading-made-simple-with-rest-assured/,了解如何发送 MULTIPART_FORM_DATA

    【讨论】:

      猜你喜欢
      • 2018-02-19
      • 2015-11-07
      • 2019-06-08
      • 1970-01-01
      • 2021-09-05
      • 2015-12-13
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多