|
3 | 3 | import cz.jiripinkas.jsitemapgenerator.exception.InvalidPriorityException;
|
4 | 4 | import cz.jiripinkas.jsitemapgenerator.exception.InvalidUrlException;
|
5 | 5 | import cz.jiripinkas.jsitemapgenerator.exception.WebmasterToolsException;
|
6 |
| -import okhttp3.OkHttpClient; |
7 |
| -import okhttp3.Request; |
8 |
| -import okhttp3.Response; |
9 |
| -import org.apache.http.HttpEntity; |
10 |
| -import org.apache.http.client.methods.CloseableHttpResponse; |
11 |
| -import org.apache.http.client.methods.HttpGet; |
12 |
| -import org.apache.http.impl.client.CloseableHttpClient; |
13 |
| -import org.apache.http.util.EntityUtils; |
14 |
| -import org.springframework.http.ResponseEntity; |
15 |
| -import org.springframework.web.client.RestTemplate; |
16 | 6 |
|
17 | 7 | import java.io.*;
|
| 8 | +import java.lang.reflect.Method; |
18 | 9 | import java.net.*;
|
19 | 10 | import java.nio.charset.StandardCharsets;
|
20 | 11 | import java.nio.file.Path;
|
@@ -239,31 +230,51 @@ public PingResponse ping(Ping ping) {
|
239 | 230 | ping(resourceUrl, sitemapUrl, searchEngine.getPrettyName());
|
240 | 231 | } else if(ping.getHttpClientType() == Ping.HttpClientType.REST_TEMPLATE) {
|
241 | 232 | String pingUrl = resourceUrl + sitemapUrl;
|
242 |
| - RestTemplate restTemplate = (RestTemplate) ping.getHttpClientImplementation(); |
243 |
| - ResponseEntity<String> responseEntity = restTemplate.getForEntity(pingUrl, String.class); |
| 233 | + org.springframework.web.client.RestTemplate restTemplate = (org.springframework.web.client.RestTemplate) ping.getHttpClientImplementation(); |
| 234 | + org.springframework.http.ResponseEntity<String> responseEntity = restTemplate.getForEntity(pingUrl, String.class); |
244 | 235 | if (responseEntity.getStatusCodeValue() != 200) {
|
245 | 236 | responseIsNot200 = true;
|
246 | 237 | }
|
247 | 238 | } else if(ping.getHttpClientType() == Ping.HttpClientType.OK_HTTP) {
|
248 | 239 | String pingUrl = resourceUrl + URLEncoder.encode(sitemapUrl, "UTF-8");
|
249 |
| - OkHttpClient okHttpClient = (OkHttpClient) ping.getHttpClientImplementation(); |
250 |
| - Request request = new Request.Builder().url(pingUrl).build(); |
251 |
| - try (Response response = okHttpClient.newCall(request).execute()) { |
| 240 | + okhttp3.OkHttpClient okHttpClient = (okhttp3.OkHttpClient) ping.getHttpClientImplementation(); |
| 241 | + okhttp3.Request request = new okhttp3.Request.Builder().url(pingUrl).build(); |
| 242 | + try (okhttp3.Response response = okHttpClient.newCall(request).execute()) { |
252 | 243 | if (!response.isSuccessful()) {
|
253 | 244 | responseIsNot200 = true;
|
254 | 245 | }
|
255 | 246 | }
|
256 | 247 | } else if(ping.getHttpClientType() == Ping.HttpClientType.APACHE_HTTP_CLIENT) {
|
257 | 248 | String pingUrl = resourceUrl + URLEncoder.encode(sitemapUrl, "UTF-8");
|
258 |
| - CloseableHttpClient closeableHttpClient = (CloseableHttpClient) ping.getHttpClientImplementation(); |
259 |
| - HttpGet httpGet = new HttpGet(pingUrl); |
260 |
| - try (CloseableHttpResponse httpResponse = closeableHttpClient.execute(httpGet)) { |
261 |
| - HttpEntity httpEntity = httpResponse.getEntity(); |
262 |
| - EntityUtils.consume(httpEntity); |
263 |
| - if(httpResponse.getStatusLine().getStatusCode() != 200) { |
| 249 | + Object httpGet = Class.forName("org.apache.http.client.methods.HttpGet").getDeclaredConstructor(String.class).newInstance(pingUrl); |
| 250 | + Method execute = Class.forName("org.apache.http.impl.client.CloseableHttpClient").getMethod("execute", Class.forName("org.apache.http.client.methods.HttpUriRequest")); |
| 251 | + Object httpResponse = null; |
| 252 | + try { |
| 253 | + httpResponse = execute.invoke(ping.getHttpClientImplementation(), httpGet); |
| 254 | + Method getEntity = Class.forName("org.apache.http.HttpResponse").getMethod("getEntity"); |
| 255 | + Object httpEntity = getEntity.invoke(httpResponse); |
| 256 | + Method consume = Class.forName("org.apache.http.util.EntityUtils").getMethod("consume", Class.forName("org.apache.http.HttpEntity")); |
| 257 | + consume.invoke(null, httpEntity); |
| 258 | + Object getStatusLine = Class.forName("org.apache.http.HttpResponse").getMethod("getStatusLine").invoke(httpResponse); |
| 259 | + int getStatusCode = (Integer) Class.forName("org.apache.http.StatusLine").getMethod("getStatusCode").invoke(getStatusLine); |
| 260 | + if(getStatusCode != 200) { |
264 | 261 | responseIsNot200 = true;
|
265 | 262 | }
|
| 263 | + } finally { |
| 264 | + if(httpResponse != null) { |
| 265 | + Class.forName("java.io.Closeable").getMethod("close").invoke(httpResponse); |
| 266 | + } |
266 | 267 | }
|
| 268 | + // same code without reflection |
| 269 | +// org.apache.http.impl.client.CloseableHttpClient closeableHttpClient = (org.apache.http.impl.client.CloseableHttpClient) ping.getHttpClientImplementation(); |
| 270 | +// org.apache.http.client.methods.HttpGet httpGet = new org.apache.http.client.methods.HttpGet(pingUrl); |
| 271 | +// try (org.apache.http.client.methods.CloseableHttpResponse httpResponse = closeableHttpClient.execute(httpGet)) { |
| 272 | +// org.apache.http.HttpEntity httpEntity = httpResponse.getEntity(); |
| 273 | +// org.apache.http.util.EntityUtils.consume(httpEntity); |
| 274 | +// if(httpResponse.getStatusLine().getStatusCode() != 200) { |
| 275 | +// responseIsNot200 = true; |
| 276 | +// } |
| 277 | +// } |
267 | 278 | } else {
|
268 | 279 | throw new UnsupportedOperationException("Unknown HttpClientType!");
|
269 | 280 | }
|
|
0 commit comments