diff --git a/samples/client/wordnik-api/android/pom.xml b/samples/client/wordnik-api/android/pom.xml
index 674f50f0109..03fdf69754e 100644
--- a/samples/client/wordnik-api/android/pom.xml
+++ b/samples/client/wordnik-api/android/pom.xml
@@ -5,7 +5,7 @@
wordnik-android-client
jar
wordnik-android-client
- 1.0.0
+ 4.0
scm:git:git@github.com:wordnik/swagger-mustache.git
scm:git:git@github.com:wordnik/swagger-codegen.git
@@ -207,7 +207,7 @@
1.0.0
4.8.1
1.6.1
- 4.2.3
+ 4.0
3.1.5
diff --git a/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/AccountApi.java b/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/AccountApi.java
index 69a503efddf..5b334fa1e4f 100644
--- a/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/AccountApi.java
+++ b/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/AccountApi.java
@@ -19,11 +19,11 @@ public class AccountApi {
public ApiInvoker getInvoker() {
return apiInvoker;
}
-
+
public void setBasePath(String basePath) {
this.basePath = basePath;
}
-
+
public String getBasePath() {
return basePath;
}
diff --git a/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordApi.java b/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordApi.java
index b52be2e1e4e..003a88caf0e 100644
--- a/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordApi.java
+++ b/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordApi.java
@@ -26,11 +26,11 @@ public class WordApi {
public ApiInvoker getInvoker() {
return apiInvoker;
}
-
+
public void setBasePath(String basePath) {
this.basePath = basePath;
}
-
+
public String getBasePath() {
return basePath;
}
diff --git a/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordListApi.java b/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordListApi.java
index 3afae241b72..e017c466636 100644
--- a/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordListApi.java
+++ b/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordListApi.java
@@ -18,11 +18,11 @@ public class WordListApi {
public ApiInvoker getInvoker() {
return apiInvoker;
}
-
+
public void setBasePath(String basePath) {
this.basePath = basePath;
}
-
+
public String getBasePath() {
return basePath;
}
diff --git a/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordListsApi.java b/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordListsApi.java
index 1f9dae7abf5..c97ab75e597 100644
--- a/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordListsApi.java
+++ b/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordListsApi.java
@@ -16,11 +16,11 @@ public class WordListsApi {
public ApiInvoker getInvoker() {
return apiInvoker;
}
-
+
public void setBasePath(String basePath) {
this.basePath = basePath;
}
-
+
public String getBasePath() {
return basePath;
}
diff --git a/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordsApi.java b/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordsApi.java
index 3674fb6ee3d..c1c8a81efa0 100644
--- a/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordsApi.java
+++ b/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordsApi.java
@@ -19,11 +19,11 @@ public class WordsApi {
public ApiInvoker getInvoker() {
return apiInvoker;
}
-
+
public void setBasePath(String basePath) {
this.basePath = basePath;
}
-
+
public String getBasePath() {
return basePath;
}
diff --git a/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/common/ApiInvoker.java b/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/common/ApiInvoker.java
index 107a7aa77b8..fb2ba7f8ce5 100644
--- a/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/common/ApiInvoker.java
+++ b/samples/client/wordnik-api/android/src/main/java/com/wordnik/client/common/ApiInvoker.java
@@ -9,11 +9,18 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.apache.http.*;
import org.apache.http.client.*;
import org.apache.http.client.methods.*;
+import org.apache.http.conn.*;
+import org.apache.http.conn.scheme.*;
+import org.apache.http.conn.ssl.*;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.*;
+import org.apache.http.impl.conn.*;
+import org.apache.http.params.*;
import org.apache.http.util.EntityUtils;
import java.io.File;
+import java.net.Socket;
+import java.net.UnknownHostException;
import java.net.URLEncoder;
import java.util.Map;
@@ -22,15 +29,50 @@ import java.util.List;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
+import java.security.GeneralSecurityException;
+import java.security.KeyManagementException;
+import java.security.KeyStore;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.security.cert.*;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+
+import java.util.Date;
+import java.util.Random;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
public class ApiInvoker {
private static ApiInvoker INSTANCE = new ApiInvoker();
private Map defaultHeaderMap = new HashMap();
private HttpClient client = null;
+
+ private boolean ignoreSSLCertificates = false;
+
+ private ClientConnectionManager ignoreSSLConnectionManager;
+
+ public ApiInvoker() {
+ initConnectionManager();
+ }
+
public static ApiInvoker getInstance() {
return INSTANCE;
}
+ public void ignoreSSLCertificates(boolean ignoreSSLCertificates) {
+ this.ignoreSSLCertificates = ignoreSSLCertificates;
+ }
+
public void addDefaultHeader(String key, String value) {
defaultHeaderMap.put(key, value);
}
@@ -114,8 +156,11 @@ public class ApiInvoker {
}
else if ("POST".equals(method)) {
HttpPost post = new HttpPost(url);
- post.setHeader("Content-Type", contentType);
- post.setEntity(new StringEntity(serialize(body), "UTF-8"));
+
+ if (body != null) {
+ post.setHeader("Content-Type", contentType);
+ post.setEntity(new StringEntity(serialize(body), "UTF-8"));
+ }
for(String key : headers.keySet()) {
post.setHeader(key, headers.get(key));
}
@@ -167,8 +212,61 @@ public class ApiInvoker {
}
private HttpClient getClient(String host) {
- if(client == null)
- client = new DefaultHttpClient();
+ if (client == null) {
+ if (ignoreSSLCertificates && ignoreSSLConnectionManager != null) {
+ // Trust self signed certificates
+ client = new DefaultHttpClient(ignoreSSLConnectionManager, new BasicHttpParams());
+ } else {
+ client = new DefaultHttpClient();
+ }
+ }
return client;
}
+
+ private void initConnectionManager() {
+ try {
+ final SSLContext sslContext = SSLContext.getInstance("SSL");
+
+ // set up a TrustManager that trusts everything
+ TrustManager[] trustManagers = new TrustManager[] {
+ new X509TrustManager() {
+ public X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+ public void checkClientTrusted(X509Certificate[] certs, String authType) {}
+ public void checkServerTrusted(X509Certificate[] certs, String authType) {}
+ }};
+
+ sslContext.init(null, trustManagers, new SecureRandom());
+
+ SSLSocketFactory sf = new SSLSocketFactory((KeyStore)null) {
+ private javax.net.ssl.SSLSocketFactory sslFactory = sslContext.getSocketFactory();
+
+ public Socket createSocket(Socket socket, String host, int port, boolean autoClose)
+ throws IOException, UnknownHostException {
+ return sslFactory.createSocket(socket, host, port, autoClose);
+ }
+
+ public Socket createSocket() throws IOException {
+ return sslFactory.createSocket();
+ }
+ };
+
+ sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
+ Scheme httpsScheme = new Scheme("https", sf, 443);
+ SchemeRegistry schemeRegistry = new SchemeRegistry();
+ schemeRegistry.register(httpsScheme);
+ schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
+
+ ignoreSSLConnectionManager = new SingleClientConnManager(new BasicHttpParams(), schemeRegistry);
+ } catch (NoSuchAlgorithmException e) {
+ // This will only be thrown if SSL isn't available for some reason.
+ } catch (KeyManagementException e) {
+ // This might be thrown when passing a key into init(), but no key is being passed.
+ } catch (GeneralSecurityException e) {
+ // This catches anything else that might go wrong.
+ // If anything goes wrong we default to the standard connection manager.
+ }
+ }
}
+