2

次のjQueryコードでアクセスできるサービスがあります(Google Chromeから--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 を設定します。これは、2 番目の呼び出しの認証に必要です。これは正常に機能し、両方のリクエストで期待どおりの結果が返されます。

サービスの自動テストを設定しようとしており、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 コードを返し、2 番目の呼び出しで使用する有効なトークンを取得します。400 ステータス コードの 2 番目の呼び出しから得られるエラーは...

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

2 に答える 2

1

私は の経験はありませんが、あなたのコードは最初に を呼び出し、次に をRestAssured呼び出すように設定されています。デフォルトのクラスレベル変数がいくつかありますが、それらに明示的に値を与えることはありません。特に、2 番目の呼び出しでは、Cookie の値を null 値に設定しています。helloapiUserApplicationnullapiUserApplication

この応答オブジェクトを返す理由もわかりませんか? それを調べて、応答に期待どおりのデータが含まれていることを確認し、このセッション ID を 2 番目の要求に設定することは理にかなっています。

于 2014-06-13T12:46:26.180 に答える
0

このコードでは、次のように初期化され、変更されていないJSESSIONIDようauthCookiesに見えます。null

于 2014-06-10T14:49:28.653 に答える