Json応答を取得する前に、認証を必要とするRestAPIをテストしたいと思います。 Forexa。 Rest APIにアクセスしたい場合: http://192.168.xx.xx:9000/dashboards/all/list/m1/p1/sch1
その後
まだログインしていない場合は、ログインHTMLページにリダイレクトされ、ログイン後、Json出力が表示されます。
今、私はJavaで同じように、安心のコードを書きたいと思います。これを使用してログインできるかどうかはわかりません。
だから私は同じための簡単なコードを書いた::
public class TestNGSimpleTest1 {
@Test
public void testAdd() {
//expect().
//statusCode(400).
//body("Status", equalTo("Success")).
//when().
//get("http://localhost:9000/dashboards/all/list/m1/p1/sch1");
//System.out.println("Response received is ::" +res);
Response res = get("http://localhost:9000/dashboards/all/list/m1/p1/sch1");
assertEquals(200,res.getStatusCode());
String json = res.asString();
System.out.println("Response received is :: " +json);
}
したがって、ここでは、Json応答を取得する代わりに、HTMLソースページ応答を取得しています。
だから、私の質問は、可能であれば、ログインしてJsonの応答を取得する方法です。
前もって感謝します。
JIRAのデフォルト認証を使用している場合は、プリエンプティブ認証が必要です。以下はサンプルコードです。
RestAssured.baseURI = System.getProperty("baseurl");
PreemptiveBasicAuthScheme authScheme = new PreemptiveBasicAuthScheme();
authScheme.setUserName("admin");
authScheme.setPassword("admin");
RestAssured.authentication = authScheme;
サンプルコードは、送信するすべてのリクエストの前に認証を行うのに役立ちます。
この方法はうまく機能します。ログイン資格情報の送信に加えて、200ステータスコードも同時に確認します
given().auth().basic(username, password).when().get("/uri/").then().statusCode(200);
あなたはこれを試すことができます:
given().auth().preemptive().basic(username, password).when().get("{yourApiURL}").then().statusCode(200);
あなたはおそらくフォーム認証を探しています:
given().auth().form("username", "password"). ..
オプションで、HTMLログインページがどのように表示されるかを説明する3番目のパラメーターとしてFormAuthConfigのインスタンスを提供する必要があります。
以下のコードは私のために働いた:
JsonPath response = RestAssured
.given()
.header("Authorization", "Basic " + encodedString)
.when()
.get(GET_Push_API)
.then()
.statusCode(401)
.extract().jsonPath();
参照-例14: https://www.programcreek.com/Java-api-examples/index.php?api=com.jayway.restassured.RestAssured