commit | 7c7f22d80748dc444d5da3c5be11d7d81ef14a2b | [log] [tgz] |
---|---|---|
author | Lorenzo Colitti <lorenzo@google.com> | Thu Jul 17 22:02:12 2014 +0900 |
committer | Lorenzo Colitti <lorenzo@google.com> | Fri Jul 25 07:29:20 2014 +0900 |
tree | c5fa1539aeaa88237483901e406b07417a43e1e3 | |
parent | 1410c75d4b2334521208259b69c23aeefec072d7 [diff] |
Allow callers to pass in a custom host resolver implementation. An HTTP client interacts with the network in two main ways: DNS lookups and connections to HTTP servers. OkHttp already abstracts the latter by allowing callers to pass in custom SocketFactory objects, but does not yet abstract the former. This change takes the existing internal Dns interface, which is currently used for testing, and turns it into a publicly accessible HostResolver interface. This allows callers to completely abstract all network interaction points. Examples of what this can be used for: 1. Use alternative DNS implementations with different performance / caching / ordering / parallelization / ... characteristics than standard InetAddress.getAllByName. 2. Resolve hosts using different DNS servers than the system resolvers, or even non-DNS protocols (e.g., MDNS or even NetBIOS/WINS) that are not supported by the system resolver. 3. Do DNS lookups on specific networks, similarly to what android_getaddrinfofornet does. Backport of upstream change: https://github.com/square/okhttp/commit/b19860c9297197a5055ac2ffd6edaedf693c1a85 Change-Id: I6e488acd938067e4c078c6ffe4d5eddb5f3951de
An HTTP & SPDY client for Android and Java applications.
For more information please see the website.
Download the latest JAR or grab via Maven:
<dependency> <groupId>com.squareup.okhttp</groupId> <artifactId>okhttp</artifactId> <version>(insert latest version)</version> </dependency>
OkHttp requires Java 7 to build and run tests. Runtime compatibility with Java 6 is enforced as part of the build to ensure compliance with Android and older versions of the JVM.
Run OkHttp tests on the desktop with Maven. Running SPDY tests on the desktop uses Jetty-NPN which requires OpenJDK 7+.
mvn clean test
OkHttp's test suite creates an in-process HTTPS server. Prior to Android 2.3, SSL server sockets were broken, and so HTTPS tests will time out when run on such devices.
Test on a USB-attached Android using Vogar. Unfortunately dx
requires that you build with Java 6, otherwise the test class will be silently omitted from the .dex
file.
mvn clean mvn package -DskipTests vogar \ --classpath ~/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar \ --classpath mockwebserver/target/mockwebserver-2.0.0-SNAPSHOT.jar \ --classpath okhttp-protocols/target/okhttp-protocols-2.0.0-SNAPSHOT.jar \ --classpath okhttp/target/okhttp-2.0.0-SNAPSHOT.jar \ okhttp/src/test
A library for testing HTTP, HTTPS, HTTP/2.0, and SPDY clients.
MockWebServer coupling with OkHttp is essential for proper testing of SPDY and HTTP/2.0 so that code can be shared.
Download the latest JAR or grab via Maven:
<dependency> <groupId>com.squareup.okhttp</groupId> <artifactId>mockwebserver</artifactId> <version>(insert latest version)</version> <scope>test</scope> </dependency>
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.