Skip to content

Commit 15a4918

Browse files
authored
Merge pull request #207 from longbai/proxy
add proxy
2 parents 0d8e6ee + 81bcae5 commit 15a4918

File tree

10 files changed

+116
-53
lines changed

10 files changed

+116
-53
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
#Changelog
22

3+
## 7.2.1 (2016-07-14)
4+
5+
### 修正
6+
* 当出现异常服务端返回为空时会造成NPE
7+
8+
### 增加
9+
* proxy 支持
10+
311
## 7.2.0 (2016-04-29)
412

513
### 修改

library/library.iml

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -48,57 +48,55 @@
4848
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
4949
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
5050
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
51+
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
5152
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
5253
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
5354
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
5455
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
5556
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
5657
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
5758
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
59+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
5860
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
5961
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
6062
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
6163
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
6264
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
6365
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
6466
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
65-
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
66-
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
67-
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
68-
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
69-
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
70-
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
71-
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
67+
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
7268
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
7369
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
7470
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
7571
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
7672
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
7773
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
7874
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
75+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
76+
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
77+
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
78+
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
79+
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
80+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
81+
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
82+
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
83+
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
7984
<excludeFolder url="file://$MODULE_DIR$/build/docs" />
8085
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
8186
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
8287
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
8388
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
84-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/debugAndroidTest" />
8589
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
86-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
8790
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
8891
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
8992
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
9093
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
9194
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
92-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
93-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/mockable-android-22.jar" />
94-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/mockable-android-23.jar" />
9595
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
9696
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
97-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/resources" />
9897
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
9998
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
10099
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
101-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/tmp" />
102100
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
103101
<excludeFolder url="file://$MODULE_DIR$/build/ivy.xml" />
104102
<excludeFolder url="file://$MODULE_DIR$/build/libs" />

library/src/androidTest/java/com/qiniu/android/HttpTest.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import com.qiniu.android.http.Client;
88
import com.qiniu.android.http.CompletionHandler;
9+
import com.qiniu.android.http.ProxyConfiguration;
910
import com.qiniu.android.http.ResponseInfo;
1011
import com.qiniu.android.utils.StringMap;
1112

@@ -196,7 +197,31 @@ public void complete(ResponseInfo rinfo, JSONObject response) {
196197
} catch (InterruptedException e) {
197198
e.printStackTrace();
198199
}
199-
Assert.assertNotNull(info.reqId);
200+
Assert.assertTrue(!"".equals(info.reqId));
200201
Assert.assertEquals(200, info.statusCode);
201202
}
203+
204+
@SmallTest
205+
public void testProxy() throws Throwable {
206+
StringMap x = new StringMap();
207+
ProxyConfiguration p = new ProxyConfiguration("115.231.183.168", 80);
208+
Client c = new Client(p, 10, 30, null, null);
209+
c.asyncPost("http://upproxy1.qiniu.com", "hello".getBytes(),
210+
x, null, new CompletionHandler() {
211+
@Override
212+
public void complete(ResponseInfo rinfo, JSONObject response) {
213+
Log.d("qiniutest", rinfo.toString());
214+
info = rinfo;
215+
signal.countDown();
216+
}
217+
}, null);
218+
219+
try {
220+
signal.await(60, TimeUnit.SECONDS); // wait for callback
221+
} catch (InterruptedException e) {
222+
e.printStackTrace();
223+
}
224+
Assert.assertTrue(!"".equals(info.reqId));
225+
Assert.assertEquals(400, info.statusCode);
226+
}
202227
}

library/src/androidTest/java/com/qiniu/android/TestConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44
* Created by bailong on 14/10/12.
55
*/
66
public final class TestConfig {
7-
public static final String token = "anEC5u_72gw1kZPSy3Dsq1lo_DPXyvuPDaj4ePkN:zmaikrTu1lgLb8DTvKQbuFZ5ai0=:eyJzY29wZSI6ImFuZHJvaWRzZGsiLCJyZXR1cm5Cb2R5Ijoie1wiaGFzaFwiOlwiJChldGFnKVwiLFwia2V5XCI6XCIkKGtleSlcIixcImZuYW1lXCI6XCIgJChmbmFtZSkgXCIsXCJmc2l6ZVwiOlwiJChmc2l6ZSlcIixcIm1pbWVUeXBlXCI6XCIkKG1pbWVUeXBlKVwiLFwieDphXCI6XCIkKHg6YSlcIn0iLCJkZWFkbGluZSI6MTQ2NjIyMjcwMX0=";
7+
public static final String token = "QWYn5TFQsLLU1pL5MFEmX3s5DmHdUThav9WyOWOm:Acr2g-mjKFQtGJaVpyLzMVSZ8Bk=:eyJzY29wZSI6ImFuZHJvaWRzZGsiLCJyZXR1cm5ib2R5Ijoie1wiaGFzaFwiOlwiJChldGFnKVwiLFwia2V5XCI6XCIkKGtleSlcIixcImZuYW1lXCI6XCIgJChmbmFtZSkgXCIsXCJmc2l6ZVwiOlwiJChmc2l6ZSlcIixcIm1pbWVUeXBlXCI6XCIkKG1pbWVUeXBlKVwiLFwieDphXCI6XCIkKHg6YSlcIn0iLCJkZWFkbGluZSI6NDI5NDk2NzI5NX0=";
88

99
}

library/src/main/java/com/qiniu/android/common/Constants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33

44
public final class Constants {
5-
public static final String VERSION = "7.2.0";
5+
public static final String VERSION = "7.2.1";
66

77
public static final String UTF_8 = "utf-8";
88
}

library/src/main/java/com/qiniu/android/http/Client.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
import java.util.List;
2020
import java.util.concurrent.TimeUnit;
2121

22+
import okhttp3.Authenticator;
2223
import okhttp3.Call;
2324
import okhttp3.Callback;
25+
import okhttp3.Credentials;
2426
import okhttp3.Dns;
2527
import okhttp3.HttpUrl;
2628
import okhttp3.Interceptor;
@@ -29,6 +31,8 @@
2931
import okhttp3.OkHttpClient;
3032
import okhttp3.Request;
3133
import okhttp3.RequestBody;
34+
import okhttp3.Response;
35+
import okhttp3.Route;
3236

3337
/**
3438
* Created by bailong on 15/11/12.
@@ -45,12 +49,15 @@ public Client() {
4549
this(null, 10, 30, null, null);
4650
}
4751

48-
public Client(Proxy proxy, int connectTimeout, int responseTimeout, UrlConverter converter, final DnsManager dns) {
52+
public Client(ProxyConfiguration proxy, int connectTimeout, int responseTimeout, UrlConverter converter, final DnsManager dns) {
4953
this.converter = converter;
5054
OkHttpClient.Builder builder = new OkHttpClient.Builder();
5155

5256
if (proxy != null) {
53-
builder.proxy(proxy.toSystemProxy());
57+
builder.proxy(proxy.proxy());
58+
if (proxy.user != null && proxy.password != null){
59+
builder.proxyAuthenticator(proxy.authenticator());
60+
}
5461
}
5562
if (dns != null) {
5663
builder.dns(new Dns() {

library/src/main/java/com/qiniu/android/http/CountingRequestBody.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
/**
1616
* Created by bailong on 16/1/8.
1717
*/
18-
public class CountingRequestBody extends RequestBody {
18+
public final class CountingRequestBody extends RequestBody {
1919

2020
private static final int SEGMENT_SIZE = 2048; // okio.Segment.SIZE
2121

library/src/main/java/com/qiniu/android/http/Proxy.java

Lines changed: 0 additions & 29 deletions
This file was deleted.
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.qiniu.android.http;
2+
3+
import java.io.IOException;
4+
import java.net.InetSocketAddress;
5+
import java.net.Proxy;
6+
7+
import okhttp3.Authenticator;
8+
import okhttp3.Credentials;
9+
import okhttp3.Route;
10+
11+
/**
12+
* http 代理
13+
*/
14+
public final class ProxyConfiguration {
15+
16+
public final String hostAddress;
17+
public final int port;
18+
public final String user;
19+
public final String password;
20+
public final Proxy.Type type;
21+
22+
/**
23+
* @param hostAddress 服务器域名或IP,比如proxy.com, 192.168.1.1
24+
* @param port 端口
25+
* @param user 用户名,无则填null
26+
* @param password 用户密码,无则填null
27+
*/
28+
public ProxyConfiguration(String hostAddress, int port, String user, String password, java.net.Proxy.Type type) {
29+
this.hostAddress = hostAddress;
30+
this.port = port;
31+
this.user = user;
32+
this.password = password;
33+
this.type = type;
34+
}
35+
36+
public ProxyConfiguration(String hostAddress, int port) {
37+
this(hostAddress, port, null, null, Proxy.Type.HTTP);
38+
}
39+
Proxy proxy(){
40+
return new Proxy(type, new InetSocketAddress(hostAddress, port));
41+
}
42+
43+
Authenticator authenticator(){
44+
return new Authenticator() {
45+
@Override
46+
public okhttp3.Request authenticate(Route route, okhttp3.Response response) throws IOException {
47+
String credential = Credentials.basic(user, password);
48+
return response.request().newBuilder().
49+
header("Proxy-Authorization", credential).
50+
header("Proxy-Connection", "Keep-Alive").build();
51+
}
52+
};
53+
}
54+
}

library/src/main/java/com/qiniu/android/storage/Configuration.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import com.qiniu.android.dns.NetworkInfo;
99
import com.qiniu.android.dns.local.AndroidDnsServer;
1010
import com.qiniu.android.dns.local.Resolver;
11-
import com.qiniu.android.http.Proxy;
11+
import com.qiniu.android.http.ProxyConfiguration;
1212
import com.qiniu.android.http.UrlConverter;
1313

1414
import java.io.File;
@@ -35,7 +35,7 @@ public final class Configuration {
3535
public final Recorder recorder;
3636
public final KeyGenerator keyGen;
3737

38-
public final Proxy proxy;
38+
public final ProxyConfiguration proxy;
3939

4040
/**
4141
* 断点上传时的分片大小(可根据网络情况适当调整)
@@ -119,7 +119,7 @@ public static class Builder {
119119

120120
private Recorder recorder = null;
121121
private KeyGenerator keyGen = null;
122-
private Proxy proxy = null;
122+
private ProxyConfiguration proxy = null;
123123

124124
private int chunkSize = 256 * 1024;
125125
private int putThreshold = 512 * 1024;
@@ -160,7 +160,7 @@ public Builder recorder(Recorder recorder, KeyGenerator keyGen) {
160160
return this;
161161
}
162162

163-
public Builder proxy(Proxy proxy) {
163+
public Builder proxy(ProxyConfiguration proxy) {
164164
this.proxy = proxy;
165165
return this;
166166
}

0 commit comments

Comments
 (0)