RestAssured内容类型application / json未被服务识别

时间:2014-06-04 14:19:42

标签: java jquery ajax rest rest-assured

我有一项服务,我可以使用以下jQuery代码访问(来自google chrome with --disable-web-security)

$.ajax({
    type: 'POST',
    url: "http://10.30.1.2:9234/myapp/v6/token/generate",
    headers: {
        "Content-Type":"application/json",
        "Accept":"application/json"
    },
    data: JSON.stringify({ 
      "staffId" : "13254",
      "password" : "JustADummyPassword"
    })
}).done(function(data) { 
    console.log(data);
});

$.ajax({
    type: 'GET',
    url: "http://10.30.1.2:9234/myapp/v6/user/appl/Firstname/Lastname/email@address.com/1998-01-01",
    headers: {
        "Content-Type":"application/json",
        "Accept":"application/json"
    }
}).done(function(data) { 
    console.log(data);
});

第一个调用设置一个cookie,这是第二次认证调用所必需的。这很好,两个请求都返回预期的结果。

我正在尝试为服务设置自动化测试,并使用RestAssured在JAVA中编写。

public class UserApplication {
    public static Map<String, String> authCookies = null;
    public static String JSESSIONID = null;
    public static void main(String[] args) {
        Response resp = hello();
        resp = apiUserApplication();
    }

    public static Response apiUserApplication() {
        String userAppl = "http://10.30.1.2:9234/myapp/v6/user/appl/Firstname/Lastname/email@address.com/1998-01-01";

        Response response = RestAssured.given()
                .cookie("JSESSIONID", JSESSIONID).and()
                .header("Accept", "application/json").and()
                .header("Content-Type", "application/json").and()
                .when().get(userAppl);

        return response;
    }

    public static Response hello() {
        String helloUrl = "http://10.30.1.2:9234/myapp/v6/hello";

        Response response = RestAssured.given().cookies(authCookies)
                .contentType("application/json").when().get(helloUrl);

        return response;
    }
}

第一个调用(hello)工作正常,返回200个代码,并获取有效的令牌以便在第二个调用中使用。我使用400状态代码从第二次调用获得的错误是......

{"errors":["Content type 'null' not supported"]}

2 个答案:

答案 0 :(得分:1)

我对RestAssured没有经验,但您的代码设置为先拨打,hello,然后apiUserApplication。您有一些默认为null的类级别变量,但您从未明确地为它们提供值。特别是,它在第​​二个调用apiUserApplication中查找,您将cookie的值设置为空值。

我也不明白为什么要返回这个响应对象?如果您要检查它,确保响应具有您期望的数据,然后为第二个请求设置此会话ID,这将是有意义的。

答案 1 :(得分:0)

看起来JSESSIONIDauthCookies初始化为null,而且此代码中没有更改。