рд╣рд╛рдп рдЯреАрдо,
рд╣рдо QAF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ API рд╕реНрд╡рдЪрд╛рд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдХреНрдпрд╛ рдХреЛрдИ рдХреГрдкрдпрд╛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реИ?
рдкрд░ рдорд╛рд░рд╛ рдЧрдпрд╛ --> рдирдпрд╛ RestTestBase().getWebResource(getBundle().getString("ws.endurl", url), "/application.json")ред * * --> рдХрд┐рд╕ GET рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ?
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж!!
рд╕рд╛рджрд░,
рдкреНрд░реЗрдо
рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдкреАрдУрдЬреЗрдУ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдЙрд╕ рд╡рд░реНрдЧ рдпрд╛ String.class
рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ ClientResponse.class
рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЖрдк рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП ws-support рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдб рдХреЗ рдиреАрдЪреЗ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред
рдХреНрдпрд╛ рд╣реИ ----> рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрди
рдХреНрдпрд╛ рд╣реИ ---->рдирдХреНрд╢рд╛
рдирд┐рдЬреА рд╕реНрдереИрддрд┐рдХ рд╢реВрдиреНрдп рдЕрдиреБрд░реЛрдзрдХреЗ рд▓рд┐рдП(рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрди, рдорд╛рдирдЪрд┐рддреНрд░
рд╣рдордиреЗ рдХреЛрдб рдХреЗ рдиреАрдЪреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рд╣рдореЗрдВ рдиреАрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрд╡рд╛рдж рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
рдХреЛрд╢рд┐рд╢ рдХреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
WebResource webResource = new RestTestBase().getWebResource(getBundle().getString("ws.endurl", url));
webResource.get(ClientResponse.class);
рддреНрд░реБрдЯрд┐:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX рдкрде рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдлрд▓:
sun.security.provider.certpath.SunCertPathBuilderException: рдЕрдиреБрд░реЛрдзрд┐рдд рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рдкреНрд░рдорд╛рдгрди рдкрде рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде
рдирдорд╕реНрддреЗ @APrem
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЗрд╕рдХреЗ рд▓рд┐рдП - рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рд╕реЗ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рд╕рд╛рде RestClientFactory рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
https://gist.github.com/outbounder/1069465
рддреЛ рдЖрдкрдХреА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрдХреНрд╖рд╛ рдиреАрдЪреЗ рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧреА рдФрд░ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрд┐рд╕реА рднреА рдЬрд╛рд╡рд╛ рдкреИрдХреЗрдЬ рдХреЗ рдЕрдВрджрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
рдкреИрдХреЗрдЬ
рдЖрдпрд╛рдд com.qmetry.qaf.automation.ws.rest.RestClientFactory;
рдЖрдпрд╛рдд com.sun.jersey.api.client.Client;
рдЖрдпрд╛рдд com.sun.jersey.api.client.config.ClientConfig;
рдЖрдпрд╛рдд com.sun.jersey.api.client.config.DefaultClientConfig;
рдЖрдпрд╛рдд com.sun.jersey.client.urlconnection.HTTPSрдЧреБрдг;
javax.net.ssl.* рдЖрдпрд╛рдд рдХрд░реЗрдВ;
рдЖрдпрд╛рдд java.security.SecureRandom;
рдЖрдпрд╛рдд java.security.cert.CertificateException;
рдЖрдпрд╛рдд java.security.cert.X509рдкреНрд░рдорд╛рдгрдкрддреНрд░;
рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реЗрд▓реНрдкрд░ рдиреЗ 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());
}
}`
рдПрдХ рдмрд╛рд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЧреБрдгреЛрдВ рдХреЗ рдЕрдВрджрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
rest.client.impl=<Your Package Name>.ClientHelper
рд╣рд╛рдп рдкреНрд░реЗрдо,
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЯрд┐рдкреНрдкрдгреА рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдЧреАред
рдореИрдВ рдЖрдк рдХреА рддрд░рд╣ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рдорд░реНрдерди рдордВрдЪ рдХреЗ рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП рдХрджрдо рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ stackoverflow QAF рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдпрд╛ рд╕рдореВрд╣ рдореЗрдВ рдЬреБрдбрд╝реЗ рд╣реБрдП ред рдЬрдм рдЖрдк рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдкреВрдЫ рд░рд╣реЗ рд╣реЛрдВ рддреЛ рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП qaf
рдЯреИрдЧ рдЬреЛрдбрд╝реЗрдВред
рдзрдиреНрдпрд╡рд╛рдж,
рдЪрд┐рд░рд╛рдЧреЛ
рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ ClientHelper рд╡рд░реНрдЧ рдФрд░ рдЕрдм рд╣рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред
рд▓реЗрдХрд┐рди URL рдЬреЛ рдХрднреА рднреА .getWebResource(getBundle().getString("ws.endurl", url)) рдХреЗ рдЕрдВрджрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдкреНрд░рддреАрдХ "?" рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рд╣реИред рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ "?" рд▓реЗ рд░рд╣рд╛ рд╣реИ "% 3F" рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХрдВрд╕реЛрд▓ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ред
рдЕрдкреЗрдХреНрд╖рд┐рдд: https://sample.url.com/xxxxxxxxxxxxx?apikey=l7xxfc8df89f313944a89e280481e09bb411
рд╡рд╛рд╕реНрддрд╡рд┐рдХ: https://sample.url.com/xxxxxxxxxxxxx%3Fapikey=l7xxfc8df89f313944a89e280481e09bb411
рдЗрд╕ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдХрд╛рд░рдг рд╣рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред
рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:
1 * рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдЙрдЯ-рдмрд╛рдЙрдВрдб рдЕрдиреБрд░реЛрдз
1 >> https://sample.url.com/xxxxxxxxxxxxx%3Fapikey=l7xxfc8df89f313944a89e280481e09bb411 рдкреНрд░рд╛рдкреНрдд
1 * рдкреНрд░рд╛рд░рдВрдн рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ: 87
1 * рдкреНрд░рд╛рдкреНрдд: рдбреЗрд▓реНрдЯрд╛: 87 рдмрд╛рдЗрдЯреНрд╕: 87
рд╕рдорд╛рдкреНрдд1 * рд╕рдорд╛рдкреНрдд
1 * рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрди-рдмрд╛рдЙрдВрдб рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
1 << 401
1 << рд╕рд░реНрд╡рд░: рдЕрдкрд╛рдЪреЗ-рдХреЛрдпреЛрдЯ/1.1
1 << рд╕рд╛рдордЧреНрд░реА-рд▓рдВрдмрд╛рдИ: 87
1 << рджрд┐рдирд╛рдВрдХ: рд╢реБрдХреНрд░, 31 рдорд╛рд░реНрдЪ 2017 14:39:19 рдЬреАрдПрдордЯреА
1 << рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░: рдЯреЗрдХреНрд╕реНрдЯ/рд╕рд╛рджрд╛; рд╡рд░реНрдгрд╕реЗрдЯ = рдпреВрдЯреАрдПрдл -8
1 <<
{
"рддреНрд░реБрдЯрд┐рдпрд╛рдВ": [
{
"message": "рдЕрд╡реИрдз apikey",
"рдХреЛрдб": 4010
}
]
}
рдореИрдВ рдиреАрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрдбрд░ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде apikey рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдоред
рдмрд┐рд▓реНрдбрд░ рдмрд┐рд▓реНрдбрд░ = webResource.getRequestBuilder ();
рдмрд┐рд▓реНрдбрд░.рд╣реЗрдбрд░ (рдПрдкрд┐рдХреА, рдПрдкреАрд╡реИрд▓реНрдпреВ);
Builder.get(ClientResponse.class);
рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП @cjayswal @thetechnocrat рдХреЛ рдзрдиреНрдпрд╡рд╛рдж !!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдирдорд╕реНрддреЗ @APrem
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЗрд╕рдХреЗ рд▓рд┐рдП - рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рд╕реЗ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рд╕рд╛рде RestClientFactory рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
https://gist.github.com/outbounder/1069465
рддреЛ рдЖрдкрдХреА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрдХреНрд╖рд╛ рдиреАрдЪреЗ рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧреА рдФрд░ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрд┐рд╕реА рднреА рдЬрд╛рд╡рд╛ рдкреИрдХреЗрдЬ рдХреЗ рдЕрдВрджрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ:;
рдкреИрдХреЗрдЬ
рдЖрдпрд╛рдд com.qmetry.qaf.automation.ws.rest.RestClientFactory;
рдЖрдпрд╛рдд com.sun.jersey.api.client.Client;
рдЖрдпрд╛рдд com.sun.jersey.api.client.config.ClientConfig;
рдЖрдпрд╛рдд com.sun.jersey.api.client.config.DefaultClientConfig;
рдЖрдпрд╛рдд com.sun.jersey.client.urlconnection.HTTPSрдЧреБрдг;
javax.net.ssl.* рдЖрдпрд╛рдд рдХрд░реЗрдВ;
рдЖрдпрд╛рдд java.security.SecureRandom;
рдЖрдпрд╛рдд java.security.cert.CertificateException;
рдЖрдпрд╛рдд java.security.cert.X509рдкреНрд░рдорд╛рдгрдкрддреНрд░;
рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реЗрд▓реНрдкрд░ рдиреЗ RestClientFactory рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ {
}`
рдПрдХ рдмрд╛рд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЧреБрдгреЛрдВ рдХреЗ рдЕрдВрджрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
rest.client.impl=<Your Package Name>.ClientHelper