commit | bcce0a3d26d66d33beb742ae2adddb3b7db5ad08 | [log] [tgz] |
---|---|---|
author | Neil Fuller <nfuller@google.com> | Tue Oct 28 13:59:09 2014 +0000 |
committer | Neil Fuller <nfuller@google.com> | Thu Nov 20 16:04:46 2014 +0000 |
tree | 7de099975388df74f08974549ce1ec40670566c4 | |
parent | fcc9fffc119d3ecb6482c04875eec2e6e0378c88 [diff] |
Changes for dealing with more granular TLS connection fallback This change also enabled OkHttp to handle socket factories that produce sockets that do not not enable all the protocols that might be part of the fallback strategy. e.g. to avoid enabling SSLv3 when SSLv3 is not enabled by default. If a socket is encountered that does not support, e.g., TLSv1.2 the negotiation is not attempted or failed; the strategy simply falls back until it finds a TlsConfiguration that can work. If none will work an exception is thrown. The majority of this change is dealing with the fact that it is not easy to know in advance which TLS/SSL protocol versions are supported by a socket without having a socket instance. OkHttp currently assumes that TLS configuration can be predetermined. RouteSelector no longer deals with TLS fallback. This is now handled by the Connection instead. A later CL will modify the fallback strategy to try various TLS versions (when supported) instead of switching immediately to SSLv3. This change allows Android to switch with minimal code changes, at least until we take a newer version of OkHttp where it may be easier. Bug: 13228108 Change-Id: If76b0b5699c22601f21c9afe494d7089ac2fa55c
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.