Hai tim,
Kami mencoba menerapkan otomatisasi API menggunakan QAF.
Adakah yang bisa menyarankan pertanyaan di bawah ini?
Dipukul di --> new RestTestBase().getWebResource(getBundle().getString("ws.endurl", url), "/application.json"). * * --> metode GET mana yang digunakan?
Terima kasih sebelumnya!!
Salam,
Prem
Jika Anda mengharapkan POJO apa pun, Anda dapat memberikan kelas itu atau String.class
atau respons umum ClientResponse.class
Anda dapat menggunakan ws-support untuk langkah-langkah siap pakai.
Terima kasih atas tanggapannya!
Berharap bagian kode di bawah ini akan membantu.
Apa itu ----> Sumber daya string
Apa itu ---->Peta
private static void requestFor(Sumber daya string, Peta
Kami mencoba dengan bagian kode di bawah ini dan kami mendapatkan pengecualian seperti di bawah ini.
Skrip yang dicoba:
WebResource webResource = new RestTestBase().getWebResource(getBundle().getString("ws.endurl", url));
webResource.get(ClientResponse.class);
Kesalahan:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: pembuatan jalur PKIX gagal:
sun.security.provider.certpath.SunCertPathBuilderException: tidak dapat menemukan jalur sertifikasi yang valid ke target yang diminta
Hai @APrem
Sepertinya Klien HTTP tidak mempercayai sertifikat.
Untuk ini - Anda harus memperluas RestClientFactory dengan cuplikan kode dari sini:
https://Gist.github.com/outbounder/1069465
jadi kelas Anda yang diperluas akan terlihat seperti di bawah ini dan Anda dapat menempatkan ini di dalam paket Java Anda:
`paket
impor com.qmetry.qaf.automation.ws.rest.RestClientFactory;
impor com.sun.jersey.api.client.Client;
impor com.sun.jersey.api.client.config.ClientConfig;
impor com.sun.jersey.api.client.config.DefaultClientConfig;
impor com.sun.jersey.client.urlconnection.HTTPSProperties;
impor javax.net.ssl.*;
impor java.security.SecureRandom;
impor java.security.cert.CertificateException;
impor java.security.cert.X509Certificate;
kelas publik ClientHelper memperluas RestClientFactory {
public static ClientConfig configureClient() {
TrustManager[ ] certs = new TrustManager[ ] {
new X509TrustManager() {
<strong i="24">@Override</strong>
public X509Certificate[] getAcceptedIssuers() {
return null;
}
<strong i="25">@Override</strong>
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
<strong i="26">@Override</strong>
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
}
};
SSLContext ctx = null;
try {
ctx = SSLContext.getInstance("TLS");
ctx.init(null, certs, new SecureRandom());
} catch (java.security.GeneralSecurityException ex) {
}
HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory());
ClientConfig config = new DefaultClientConfig();
try {
config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(
new HostnameVerifier() {
<strong i="27">@Override</strong>
public boolean verify(String hostname, SSLSession session) {
return true;
}
},
ctx
));
} catch(Exception e) {
}
return config;
}
<strong i="28">@Override</strong>
protected Client createClient() {
return Client.create(ClientHelper.configureClient());
}
}`
Setelah Anda melakukan ini, Anda harus mendaftarkan kelas ini di dalam properti aplikasi:
rest.client.impl=<Your Package Name>.ClientHelper
Hai Pram,
Semoga komentar di atas akan membantu Anda menyelesaikan masalah Anda.
Saya ingin meminta Anda memindahkan pertanyaan ke forum dukungan komunitas seperti stackoverflow dengan tag QAF atau ditautkan dalam grup . Saat Anda bertanya tentang stackoverflow, tambahkan tag qaf
untuk mendapatkan respons cepat.
Terima kasih,
Chirag
Terima kasih atas tanggapannya.
Menambahkan kelas ClientHelper dan sekarang kami dapat melihat responsnya.
Tapi URL yang pernah diberikan di dalam .getWebResource(getBundle().getString("ws.endurl", url)); memiliki kunci api. Oleh karena itu, simbol tanda tanya "?" ada di URL. Potongan kode ini mengambil "?" sebagai "%3F" dan mencetak konsol seperti di bawah ini.
Diharapkan: https://sample.url.com/xxxxxxxxxxxxx?apikey=l7xxfc8df89f313944a89e280481e09bb411
Sebenarnya: https://sample.url.com/xxxxxxxxxxxxx%3Fapikey=l7xxfc8df89f313944a89e280481e09bb411
Karena konversi ini kami mendapatkan kesalahan dalam output.
Keluaran konsol:
1 * Permintaan keluar klien
1 >> DAPATKAN https://sample.url.com/xxxxxxxxxxxxx%3Fapikey=l7xxfc8df89f313944a89e280481e09bb411
1 * Terima Mulai: 87
1 * Diterima: delta: 87 byte: 87
Selesai1 * Selesai
1 * Respons masuk klien
1 << 401
1 << Server: Apache-Coyote/1.1
1 << Isi-Panjang: 87
1 << Tanggal: Jum, 31 Mar 2017 14:39:19 GMT
1 << Tipe-Konten: teks/polos;charset=UTF-8
1 <<
{
"kesalahan": [
{
"message": "apikey tidak valid",
"kode": 4010
}
]
}
Saya telah melewati apikey dengan objek Header seperti di bawah ini dan bisa mendapatkan respons.
Pembangun pembangun = webResource.getRequestBuilder();
builder.header(apikey, apiValue);
builder.get(ClientResponse.class);
Terima kasih!
Terima kasih @cjayswal @thetechnocrat atas dukungannya !!
Komentar yang paling membantu
Hai @APrem
Sepertinya Klien HTTP tidak mempercayai sertifikat.
Untuk ini - Anda harus memperluas RestClientFactory dengan cuplikan kode dari sini:
https://Gist.github.com/outbounder/1069465
jadi kelas Anda yang diperluas akan terlihat seperti di bawah ini dan Anda dapat menempatkan ini di dalam paket Java Anda:;
`paket
impor com.qmetry.qaf.automation.ws.rest.RestClientFactory;
impor com.sun.jersey.api.client.Client;
impor com.sun.jersey.api.client.config.ClientConfig;
impor com.sun.jersey.api.client.config.DefaultClientConfig;
impor com.sun.jersey.client.urlconnection.HTTPSProperties;
impor javax.net.ssl.*;
impor java.security.SecureRandom;
impor java.security.cert.CertificateException;
impor java.security.cert.X509Certificate;
kelas publik ClientHelper memperluas RestClientFactory {
}`
Setelah Anda melakukan ini, Anda harus mendaftarkan kelas ini di dalam properti aplikasi:
rest.client.impl=<Your Package Name>.ClientHelper