diff --git a/pom.xml b/pom.xml
index cdb8bba..1923989 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
ru.dmitriymx
vkapiuni
- 1.0-SNAPSHOT
+ 1.1-SNAPSHOT
UTF-8
@@ -30,6 +30,22 @@
gson
2.8.0
+
+ commons-io
+ commons-io
+ 2.5
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.2
+
+
+ commons-logging
+ commons-logging
+
+
+
diff --git a/src/main/java/ru/dmitriymx/vkapi/VkApi.java b/src/main/java/ru/dmitriymx/vkapi/VkApi.java
index b301ed0..20554e5 100644
--- a/src/main/java/ru/dmitriymx/vkapi/VkApi.java
+++ b/src/main/java/ru/dmitriymx/vkapi/VkApi.java
@@ -8,6 +8,8 @@ import com.google.gson.Gson;
import com.google.gson.JsonObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import ru.dmitriymx.vkapi.browser.Browser;
+import ru.dmitriymx.vkapi.browser.Response;
import java.io.IOException;
import java.util.Map;
diff --git a/src/main/java/ru/dmitriymx/vkapi/browser/ApacheBroswe.java b/src/main/java/ru/dmitriymx/vkapi/browser/ApacheBroswe.java
new file mode 100644
index 0000000..deae5d4
--- /dev/null
+++ b/src/main/java/ru/dmitriymx/vkapi/browser/ApacheBroswe.java
@@ -0,0 +1,75 @@
+/*
+ * DmitriyMX
+ * 2017-04-10
+ */
+package ru.dmitriymx.vkapi.browser;
+
+import org.apache.commons.io.IOUtils;
+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.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpRequestBase;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.HttpClients;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ApacheBroswe implements Browser {
+ private final HttpClient client = HttpClients.createDefault();
+ private String userAgent = "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";
+
+ @Override
+ public void setUserAgent(String userAgent) {
+ this.userAgent = userAgent;
+ }
+
+ @Override
+ public Response get(String url) throws IOException {
+ return request(new HttpGet(url));
+ }
+
+ @Override
+ public Response post(String url, String data) throws IOException {
+ HttpPost requestPost = new HttpPost(url);
+ requestPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
+ if (data != null) {
+ requestPost.setEntity(new StringEntity(data));
+ }
+
+ return request(requestPost);
+ }
+
+ private Response request(HttpRequestBase request) throws IOException {
+ setup_headers(request);
+ HttpResponse response = client.execute(request);
+
+ try (InputStream streamContent = response.getEntity().getContent()) {
+ String contentRaw = IOUtils.toString(streamContent, "UTF-8");
+ String contentType = "text/plain";
+ for (Header header : response.getAllHeaders()) {
+ if (header.getName().equalsIgnoreCase("Content-Type")) {
+ contentType = header.getValue();
+ if (contentType.contains(";")) {
+ contentType = contentType.split(";")[0];
+ }
+ break;
+ }
+ }
+
+ return new ApacheResponse(
+ response.getStatusLine().getStatusCode(),
+ contentType, contentRaw
+ );
+ }
+ }
+
+ private void setup_headers(HttpMessage request) {
+ request.addHeader("Connection", "close");
+ request.addHeader("Accept-Encoding", "deflate");
+ request.addHeader("User-Agent", userAgent);
+ }
+}
diff --git a/src/main/java/ru/dmitriymx/vkapi/browser/ApacheResponse.java b/src/main/java/ru/dmitriymx/vkapi/browser/ApacheResponse.java
new file mode 100644
index 0000000..91613b2
--- /dev/null
+++ b/src/main/java/ru/dmitriymx/vkapi/browser/ApacheResponse.java
@@ -0,0 +1,32 @@
+/*
+ * DmitriyMX
+ * 2017-04-10
+ */
+package ru.dmitriymx.vkapi.browser;
+
+public class ApacheResponse implements Response {
+ private final int code;
+ private final String contentType;
+ private final String content;
+
+ ApacheResponse(int code, String contentType, String content) {
+ this.code = code;
+ this.contentType = contentType;
+ this.content = content;
+ }
+
+ @Override
+ public int getStatus() {
+ return code;
+ }
+
+ @Override
+ public String getContentType() {
+ return contentType;
+ }
+
+ @Override
+ public String getContent() {
+ return content;
+ }
+}
diff --git a/src/main/java/ru/dmitriymx/vkapi/Browser.java b/src/main/java/ru/dmitriymx/vkapi/browser/Browser.java
similarity index 74%
rename from src/main/java/ru/dmitriymx/vkapi/Browser.java
rename to src/main/java/ru/dmitriymx/vkapi/browser/Browser.java
index e7d3693..2281a4f 100644
--- a/src/main/java/ru/dmitriymx/vkapi/Browser.java
+++ b/src/main/java/ru/dmitriymx/vkapi/browser/Browser.java
@@ -2,11 +2,12 @@
* DmitriyMX
* 2017-04-10
*/
-package ru.dmitriymx.vkapi;
+package ru.dmitriymx.vkapi.browser;
import java.io.IOException;
public interface Browser {
+ void setUserAgent(String userAgent);
Response get(String url) throws IOException;
Response post(String url, String data) throws IOException;
}
diff --git a/src/main/java/ru/dmitriymx/vkapi/Response.java b/src/main/java/ru/dmitriymx/vkapi/browser/Response.java
similarity index 81%
rename from src/main/java/ru/dmitriymx/vkapi/Response.java
rename to src/main/java/ru/dmitriymx/vkapi/browser/Response.java
index 12cc623..8496471 100644
--- a/src/main/java/ru/dmitriymx/vkapi/Response.java
+++ b/src/main/java/ru/dmitriymx/vkapi/browser/Response.java
@@ -2,7 +2,7 @@
* DmitriyMX
* 2017-04-10
*/
-package ru.dmitriymx.vkapi;
+package ru.dmitriymx.vkapi.browser;
public interface Response {
int getStatus();