当前位置: 首页 > 知识库问答 >
问题:

非预期的内容类型在使用JavaResAs的响应

魏臻
2023-03-14

我在RequestSpecBuilder中将内容类型设置为“ContentType.JSON”。但在发出GET请求时,我得到的内容类型是“application/xml”。如何获取json响应?我尝试过以下方法:1。使用RequestSpecBuilder类的setContentType方法将RequestSpecBuilder对象中的内容类型设置为“ContentType.JSON”,并在RequestSpecification的spec方法中传递RequestSpecBuilder对象——得到“application/xml”作为响应

注意:webservice URL要求显式指定“.json”以获得json响应,否则默认情况下它将返回“xml”响应。但是,我想使用RequestSpecBuilder设置内容类型。例如:对于Json响应:URL--http://ergast.com/api/f1/2017/circuits.json对于Xml响应:URL--http://ergast.com/api/f1/2017/circuits

Code:
@Test   
public void test_AddHeader() {      
        //Use of RequestSpecification
        String pathUrl = "http://ergast.com/api/f1/2017/circuits";
        RequestSpecBuilder requestSpecBuilder = new RequestSpecBuilder();
        requestSpecBuilder = requestSpecBuilder.        
                setBaseUri(pathUrl).
                setContentType(ContentType.JSON).
                addQueryParam("limit", "10"); //added query param       
        RequestSpecification addRequestSpec = requestSpecBuilder.build();       

        RequestSpecification httpRequest = RestAssured.given().spec(addRequestSpec).contentType(ContentType.JSON);      
        Response httpResponse = httpRequest.get();
        System.out.println(httpResponse.getContentType()); //returns application/xml
        System.out.println(httpResponse.getStatusLine());   //returns HTTP/1.1 200 OK
        System.out.println(httpResponse.getBody().asString());//returns XML response
    }

共有1个答案

鱼宜
2023-03-14

您希望从响应中获得JSON,但您正在将setContentType传递给您的RequestSpecBuilder。这只会创建json格式的POST有效负载。这对你的回答没有任何影响。

您可以做的是创建一个ResponseBuilder,并在那里对JSON执行setContentType。希望这对你有帮助。

 类似资料:
  • 在我的rest控制器类中,我有以下方法 这特别说明我正在将application/json对象返回给请求用户。但是,当我执行rest-assured测试时 我收到以下错误 我很困惑,不知道为什么我的标题在rest测试中没有说明任何内容类型。我将请求放入我的web浏览器并选择Headers选项卡,元数据如下所示 响应头 请求头 关于为什么我的ContentType没有被请求的rest-assured

  • 问题内容: 因此,我在Struts2中使用freemarker模板来制定我的响应。但是,由于我也尝试使用taconite,因此需要使用“ text / xml”的内容类型发送响应。我似乎找不到使用freemarker指令设置内容类型的方法,而且我对Struts并不精通,无法知道是否有办法通过它来完成。 那么,我应该怎么做呢? 问题答案: 或者您可以在struts.xml中进行设置

  • 我预计服务器上会出现此请求的错误,然后将其作为字符串与预期响应进行比较。 问题是,在执行此命令时,RestAsure会给我一个错误:java.lang.IllegalStateExcture:无法解析对象,因为响应中没有指定支持的Content-Type。Content-Type为text/html; charset=ISO-8859-1。 我已经在设置中添加了解码器,但没有帮助。 错误情况下服务

  • 我试图得到下面给出的带有SpringRest模板的响应实体。我得到了下面的错误, 代码: 我在这篇文章中尝试将媒体类型设置为Application/json。但还是一样的错误。 完整跟踪:

  • 问题内容: 使用firebug时,我在asp.net mvc 4项目中收到此有线错误“ NetworkError:415无法处理… xt / xml; charset = utf-8’– ”。 代码: 服务代码: 该接口是: 和网络配置,我在WCF中使用了无文件: 问题答案: 您需要使用,而不是代码中的常规。这将为端点配置适当的绑定()和行为()以遵守该属性。

  • 你们谁能帮我做这个节目吗?我试图编译它,但不知道它发生了什么。有两个java文件,我将只发送主要的一个,这是有问题的一个(直到现在)。这是一个计算公司每月利润的简单程序。 尝试编译上面的程序返回给我以下5个错误······有人能解释一下他们的意思吗?提前感谢!