From 650ec70238b599e9b6061a87b4948843c29b9551 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Wed, 4 Jan 2017 00:50:07 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D1=85=D0=BE=D0=B4=20?= =?UTF-8?q?=D0=BD=D0=B0=20Apache=20HTTP=20Client?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 + src/main/java/kinosearch/core/Tools.java | 4 +- .../core/browser/ApacheHttpBrowser.java | 98 +++++++++++++++++++ src/test/java/core/TestBrowser.java | 4 +- 4 files changed, 107 insertions(+), 4 deletions(-) create mode 100644 src/main/java/kinosearch/core/browser/ApacheHttpBrowser.java diff --git a/pom.xml b/pom.xml index acc0cd3..0574dfd 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,11 @@ gson 2.4 + + org.apache.httpcomponents + httpclient + 4.5.2 + junit junit diff --git a/src/main/java/kinosearch/core/Tools.java b/src/main/java/kinosearch/core/Tools.java index 23cca73..388df5a 100644 --- a/src/main/java/kinosearch/core/Tools.java +++ b/src/main/java/kinosearch/core/Tools.java @@ -1,7 +1,7 @@ package kinosearch.core; import kinosearch.core.browser.Browser; -import kinosearch.core.browser.SimpleBrowser; +import kinosearch.core.browser.ApacheHttpBrowser; import kinosearch.core.warez.Hdrezka; import kinosearch.core.warez.KinoWarez; import kinosearch.core.warez.Onlinelife; @@ -17,7 +17,7 @@ public class Tools { private static Set kinoWarezSet; public static Browser createBrowser() { - return new SimpleBrowser(); + return new ApacheHttpBrowser(); } public static String SafeUrlEncode(String string, String encode) { diff --git a/src/main/java/kinosearch/core/browser/ApacheHttpBrowser.java b/src/main/java/kinosearch/core/browser/ApacheHttpBrowser.java new file mode 100644 index 0000000..0ceca0a --- /dev/null +++ b/src/main/java/kinosearch/core/browser/ApacheHttpBrowser.java @@ -0,0 +1,98 @@ +/* + * DmitriyMX + * 2017-01-03 + */ +package kinosearch.core.browser; + +import org.apache.http.Header; +import org.apache.http.HttpMessage; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicHeader; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.HashSet; +import java.util.Set; + +public class ApacheHttpBrowser implements Browser { + private Set
headers = new HashSet<>(); + private String encoding = "UTF-8"; + + @Override + public Browser setHeader(String name, String value) { + headers.add(new BasicHeader(name, value)); + return this; + } + + @Override + public String get(String url) { + HttpClient client = HttpClients.createDefault(); + HttpGet request = new HttpGet(url); + + setup_headers(request); + + String result = ""; + try { + HttpResponse response = client.execute(request); + result = readOutout(response.getEntity().getContent()); + } catch (IOException ignore) { + // ignore + } + return result; + } + + @Override + public String post(String url, String data) { + HttpClient client = HttpClients.createDefault(); + HttpPost request = new HttpPost(url); + + setup_headers(request); + request.addHeader("Content-Type", "application/x-www-form-urlencoded"); + + String result = ""; + try { + request.setEntity(new StringEntity(data)); + HttpResponse response = client.execute(request); + result = readOutout(response.getEntity().getContent()); + } catch (IOException ignore) { + // ignore + } + + return result; + } + + @Override + public void setEncoding(String encoding) { + this.encoding = (encoding == null ? "UTF-8" : encoding); + } + + private String readOutout(InputStream inputStream) throws IOException { + StringBuilder sb = new StringBuilder(); + String str; + BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, encoding)); + while ((str = br.readLine()) != null) { + sb.append(str).append('\n'); + } + br.close(); + + return sb.toString(); + } + + private void setup_headers(HttpMessage httpMessage) { + httpMessage.addHeader("Connection", "close"); + httpMessage.addHeader("Accept-Encoding", "deflate"); + httpMessage.addHeader("User-Agent", "Mozilla/5.0 (Linux; Android 4.2.2; GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36"); + + for (Header header : headers) { + httpMessage.addHeader(header); + } + } +} diff --git a/src/test/java/core/TestBrowser.java b/src/test/java/core/TestBrowser.java index 274abf9..226d513 100644 --- a/src/test/java/core/TestBrowser.java +++ b/src/test/java/core/TestBrowser.java @@ -3,7 +3,7 @@ package core; import com.google.gson.Gson; import com.google.gson.JsonObject; import kinosearch.core.browser.Browser; -import kinosearch.core.browser.SimpleBrowser; +import kinosearch.core.browser.ApacheHttpBrowser; import static org.junit.Assert.*; import org.junit.Test; @@ -15,7 +15,7 @@ public class TestBrowser { private final String header_name = "Mytestheader"; private Browser getBrowser() { - return new SimpleBrowser(); + return new ApacheHttpBrowser(); } private void setup_headers(Browser browser) {