我有一项服务,我可以使用以下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"]}
答案 0 :(得分:1)
我对RestAssured
没有经验,但您的代码设置为先拨打,hello
,然后apiUserApplication
。您有一些默认为null
的类级别变量,但您从未明确地为它们提供值。特别是,它在第二个调用apiUserApplication
中查找,您将cookie的值设置为空值。
我也不明白为什么要返回这个响应对象?如果您要检查它,确保响应具有您期望的数据,然后为第二个请求设置此会话ID,这将是有意义的。
答案 1 :(得分:0)
看起来JSESSIONID
和authCookies
初始化为null
,而且此代码中没有更改。