2

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

$.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"]}
4

2 回答 2

1

我对 没有经验RestAssured,但是您的代码设置为首先调用hello,然后apiUserApplication。你有一些你默认的类级别变量null,但你从来没有明确地给它们一个值。特别是,在第二次调用中apiUserApplication,您正在将 cookie 的值设置为空值。

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

于 2014-06-13T12:46:26.180 回答
0

它看起来像JSESSIONID并且authCookies被初始化为null并且在此代码中没有改变。

于 2014-06-10T14:49:28.653 回答