diff --git a/pom.xml b/pom.xml
index 9b11b977f3..2258760f43 100644
--- a/pom.xml
+++ b/pom.xml
@@ -144,6 +144,12 @@
2.7.5
true
+
+ com.squareup.okhttp3
+ okhttp-urlconnection
+ 3.4.0
+ true
+
org.kohsuke
wordnet-random-name
diff --git a/src/main/java/org/kohsuke/github/extras/OkHttp3Connector.java b/src/main/java/org/kohsuke/github/extras/OkHttp3Connector.java
new file mode 100644
index 0000000000..d2fd8c6978
--- /dev/null
+++ b/src/main/java/org/kohsuke/github/extras/OkHttp3Connector.java
@@ -0,0 +1,32 @@
+package org.kohsuke.github.extras;
+
+import okhttp3.OkHttpClient;
+import okhttp3.OkUrlFactory;
+import org.kohsuke.github.HttpConnector;
+
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/**
+ * {@link HttpConnector} for {@link OkHttpClient}.
+ *
+ * Unlike {@link #DEFAULT}, OkHttp does response caching.
+ * Making a conditional request against GitHubAPI and receiving a 304
+ * response does not count against the rate limit.
+ * See http://developer.github.com/v3/#conditional-requests
+ *
+ * @author Roberto Tyley
+ * @author Kohsuke Kawaguchi
+ */
+public class OkHttp3Connector implements HttpConnector {
+ private final OkUrlFactory urlFactory;
+
+ public OkHttp3Connector(OkUrlFactory urlFactory) {
+ this.urlFactory = urlFactory;
+ }
+
+ public HttpURLConnection connect(URL url) throws IOException {
+ return urlFactory.open(url);
+ }
+}