Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
DoraemonKit
提交
e1d41994
D
DoraemonKit
项目概览
DiDi
/
DoraemonKit
大约 1 年 前同步成功
通知
166
Star
19623
Fork
3062
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DoraemonKit
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e1d41994
编写于
4月 15, 2020
作者:
J
jackjintai
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify:
1、解决retrfit 在某些场景下会报错的问题
上级
41b9108f
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
4 addition
and
1508 deletion
+4
-1508
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/largepicture/LargePictureManager.java
...ing/doraemonkit/kit/largepicture/LargePictureManager.java
+0
-3
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/HttpChainFacade.java
...monkit/kit/network/httpurlconnection/HttpChainFacade.java
+0
-45
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/HttpRequest.java
...oraemonkit/kit/network/httpurlconnection/HttpRequest.java
+0
-48
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/HttpResponse.java
...raemonkit/kit/network/httpurlconnection/HttpResponse.java
+0
-64
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/chain/HttpRequestChain.java
...kit/network/httpurlconnection/chain/HttpRequestChain.java
+0
-33
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/chain/HttpRequestStreamChain.java
...twork/httpurlconnection/chain/HttpRequestStreamChain.java
+0
-33
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/chain/HttpResponseChain.java
...it/network/httpurlconnection/chain/HttpResponseChain.java
+0
-33
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/chain/HttpResponseStreamChain.java
...work/httpurlconnection/chain/HttpResponseStreamChain.java
+0
-33
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/chain/InterceptorChain.java
...kit/network/httpurlconnection/chain/InterceptorChain.java
+0
-37
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/inspector/URLConnectionInspectorHeaders.java
...rlconnection/inspector/URLConnectionInspectorHeaders.java
+0
-50
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/inspector/URLConnectionInspectorRequest.java
...rlconnection/inspector/URLConnectionInspectorRequest.java
+0
-60
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/inspector/URLConnectionInspectorResponse.java
...lconnection/inspector/URLConnectionInspectorResponse.java
+0
-46
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/interceptor/DKInterceptor.java
.../network/httpurlconnection/interceptor/DKInterceptor.java
+0
-46
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/interceptor/HttpMonitorInterceptor.java
...httpurlconnection/interceptor/HttpMonitorInterceptor.java
+0
-103
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/interceptor/LargePictureInterceptor.java
...ttpurlconnection/interceptor/LargePictureInterceptor.java
+0
-71
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/interceptor/MockInterceptor.java
...etwork/httpurlconnection/interceptor/MockInterceptor.java
+0
-89
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/proxy/HttpUrlConnectionProxy.java
...twork/httpurlconnection/proxy/HttpUrlConnectionProxy.java
+0
-348
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/proxy/HttpsUrlConnectionProxy.java
...work/httpurlconnection/proxy/HttpsUrlConnectionProxy.java
+0
-365
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/okhttp/interceptor/LargePictureInterceptor.java
...t/network/okhttp/interceptor/LargePictureInterceptor.java
+4
-1
未找到文件。
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/largepicture/LargePictureManager.java
浏览文件 @
e1d41994
...
...
@@ -51,9 +51,6 @@ public class LargePictureManager {
private
static
LargePictureManager
INSTANCE
=
new
LargePictureManager
();
}
private
LargePictureManager
()
{
}
/**
* @param url
...
...
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/HttpChainFacade.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpRequestChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpRequestStreamChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpResponseChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpResponseStreamChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.DKInterceptor
;
import
java.io.IOException
;
import
java.util.List
;
/**
* 2019/3/14
* @desc: 对几个处理链的包装
*/
public
class
HttpChainFacade
{
private
final
HttpRequestChain
mHttpRequestChain
;
private
final
HttpResponseChain
mHttpResponseChain
;
private
final
HttpRequestStreamChain
mHttpRequestStreamChain
;
private
final
HttpResponseStreamChain
mHttpResponseStreamChain
;
public
HttpChainFacade
(
List
<
DKInterceptor
>
interceptors
)
{
mHttpRequestChain
=
new
HttpRequestChain
(
interceptors
);
mHttpResponseChain
=
new
HttpResponseChain
(
interceptors
);
mHttpRequestStreamChain
=
new
HttpRequestStreamChain
(
interceptors
);
mHttpResponseStreamChain
=
new
HttpResponseStreamChain
(
interceptors
);
}
public
void
process
(
HttpRequest
request
)
throws
IOException
{
mHttpRequestChain
.
process
(
request
);
}
public
void
process
(
HttpResponse
response
)
throws
IOException
{
mHttpResponseChain
.
process
(
response
);
}
public
void
processStream
(
HttpRequest
request
)
throws
IOException
{
mHttpRequestStreamChain
.
process
(
request
);
}
public
void
processStream
(
HttpResponse
response
)
throws
IOException
{
mHttpResponseStreamChain
.
process
(
response
);
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/HttpRequest.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection
;
import
android.util.Log
;
import
java.io.OutputStream
;
import
java.net.HttpURLConnection
;
import
java.util.List
;
import
java.util.Map
;
/**
* 2019/3/12
* @desc: 请求结构体
*/
public
class
HttpRequest
{
private
static
final
String
TAG
=
"HttpRequest"
;
private
final
HttpURLConnection
mURLConnection
;
private
OutputStream
mOutputStream
;
public
HttpRequest
(
HttpURLConnection
urlConnection
)
{
mURLConnection
=
urlConnection
;
}
public
String
getUrl
(){
return
mURLConnection
.
getURL
().
toString
();
}
public
String
getMethod
(){
return
mURLConnection
.
getRequestMethod
();
}
public
OutputStream
getOutputStream
()
{
return
mOutputStream
;
}
public
Map
<
String
,
List
<
String
>>
getHeaders
()
{
// connect参数不知道什么会被置为true,以防崩溃,这里直接try-catch住
try
{
return
mURLConnection
.
getRequestProperties
();
}
catch
(
Exception
e
)
{
Log
.
d
(
TAG
,
"get head exception"
,
e
);
return
null
;
}
}
public
void
setOutputStream
(
OutputStream
outputStream
)
{
mOutputStream
=
outputStream
;
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/HttpResponse.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection
;
import
android.util.Log
;
import
java.io.InputStream
;
import
java.net.HttpURLConnection
;
import
java.util.List
;
import
java.util.Map
;
/**
* 2019/3/12
* @desc: 响应体
*/
public
class
HttpResponse
{
private
final
String
TAG
=
"HttpResponse"
;
private
final
HttpURLConnection
mURLConnection
;
private
int
mStatusCode
;
private
InputStream
mInputStream
;
public
HttpResponse
(
HttpURLConnection
urlConnection
)
{
mURLConnection
=
urlConnection
;
}
public
int
getStatusCode
()
{
return
mStatusCode
;
}
public
void
setStatusCode
(
int
statusCode
)
{
mStatusCode
=
statusCode
;
}
public
InputStream
getInputStream
()
{
return
mInputStream
;
}
public
void
setInputStream
(
InputStream
inputStream
)
{
mInputStream
=
inputStream
;
}
public
String
getUrl
()
{
return
mURLConnection
.
getURL
().
toString
();
}
public
Map
<
String
,
List
<
String
>>
getHeaders
()
{
try
{
return
mURLConnection
.
getHeaderFields
();
}
catch
(
Exception
e
)
{
Log
.
d
(
TAG
,
"get head exception"
,
e
);
return
null
;
}
}
public
String
getHeaderField
(
String
key
)
{
Map
<
String
,
List
<
String
>>
map
=
getHeaders
();
if
(
map
==
null
)
{
return
null
;
}
List
<
String
>
fields
=
map
.
get
(
key
);
if
(
fields
==
null
||
fields
.
size
()
==
0
)
{
return
null
;
}
return
fields
.
get
(
fields
.
size
()
-
1
);
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/chain/HttpRequestChain.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.DKInterceptor
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpRequest
;
import
java.io.IOException
;
import
java.util.List
;
/**
* 请求处理链
*/
public
class
HttpRequestChain
extends
InterceptorChain
<
HttpRequest
,
DKInterceptor
>
{
@Override
protected
void
processNext
(
HttpRequest
source
,
List
<
DKInterceptor
>
interceptors
,
int
index
)
throws
IOException
{
DKInterceptor
interceptor
=
interceptors
.
get
(
index
);
if
(
interceptor
!=
null
)
{
index
++;
interceptor
.
intercept
(
this
,
source
);
}
}
public
HttpRequestChain
(
List
<
DKInterceptor
>
interceptors
)
{
this
(
interceptors
,
0
);
}
public
HttpRequestChain
(
List
<
DKInterceptor
>
interceptors
,
int
index
)
{
super
(
interceptors
,
index
);
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/chain/HttpRequestStreamChain.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.DKInterceptor
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpRequest
;
import
java.io.IOException
;
import
java.util.List
;
/**
* 请求body处理链
*/
public
class
HttpRequestStreamChain
extends
InterceptorChain
<
HttpRequest
,
DKInterceptor
>
{
@Override
protected
void
processNext
(
HttpRequest
source
,
List
<
DKInterceptor
>
interceptors
,
int
index
)
throws
IOException
{
DKInterceptor
interceptor
=
interceptors
.
get
(
index
);
if
(
interceptor
!=
null
)
{
index
++;
interceptor
.
intercept
(
this
,
source
);
}
}
public
HttpRequestStreamChain
(
List
<
DKInterceptor
>
interceptors
)
{
this
(
interceptors
,
0
);
}
public
HttpRequestStreamChain
(
List
<
DKInterceptor
>
interceptors
,
int
index
)
{
super
(
interceptors
,
index
);
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/chain/HttpResponseChain.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.DKInterceptor
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpResponse
;
import
java.io.IOException
;
import
java.util.List
;
/**
* 2019/3/11
* @desc: 响应处理链,不包含响应body
*/
public
class
HttpResponseChain
extends
InterceptorChain
<
HttpResponse
,
DKInterceptor
>
{
public
HttpResponseChain
(
List
<
DKInterceptor
>
interceptors
)
{
super
(
interceptors
);
}
public
HttpResponseChain
(
List
<
DKInterceptor
>
interceptors
,
int
index
)
{
super
(
interceptors
,
index
);
}
@Override
protected
void
processNext
(
HttpResponse
response
,
List
<
DKInterceptor
>
interceptors
,
int
index
)
throws
IOException
{
DKInterceptor
interceptor
=
interceptors
.
get
(
index
);
if
(
interceptor
!=
null
)
{
index
++;
interceptor
.
intercept
(
this
,
response
);
}
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/chain/HttpResponseStreamChain.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.DKInterceptor
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpResponse
;
import
java.io.IOException
;
import
java.util.List
;
/**
* 2019/3/11
* @desc: 响应body处理链
*/
public
class
HttpResponseStreamChain
extends
InterceptorChain
<
HttpResponse
,
DKInterceptor
>
{
public
HttpResponseStreamChain
(
List
<
DKInterceptor
>
interceptors
)
{
super
(
interceptors
);
}
public
HttpResponseStreamChain
(
List
<
DKInterceptor
>
interceptors
,
int
index
)
{
super
(
interceptors
,
index
);
}
@Override
protected
void
processNext
(
HttpResponse
response
,
List
<
DKInterceptor
>
interceptors
,
int
index
)
throws
IOException
{
DKInterceptor
interceptor
=
interceptors
.
get
(
index
);
if
(
interceptor
!=
null
)
{
index
++;
interceptor
.
intercept
(
this
,
response
);
}
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/chain/InterceptorChain.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.DKInterceptor
;
import
java.io.IOException
;
import
java.util.List
;
public
abstract
class
InterceptorChain
<
T
,
I
extends
DKInterceptor
>
{
protected
List
<
I
>
mInterceptors
;
protected
int
mIndex
;
protected
abstract
void
processNext
(
T
buffer
,
List
<
I
>
interceptors
,
int
index
)
throws
IOException
;
public
InterceptorChain
(
List
<
I
>
interceptors
)
{
this
(
interceptors
,
0
);
}
public
InterceptorChain
(
List
<
I
>
interceptors
,
int
index
)
{
this
.
mInterceptors
=
interceptors
;
this
.
mIndex
=
index
;
}
public
void
processFinal
(
T
source
)
throws
IOException
{
// mSource.process(buffer);
}
public
void
process
(
T
source
)
throws
IOException
{
if
(
mIndex
>=
mInterceptors
.
size
())
{
processFinal
(
source
);
}
else
{
processNext
(
source
,
mInterceptors
,
mIndex
++);
}
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/inspector/URLConnectionInspectorHeaders.java
已删除
100644 → 0
浏览文件 @
41b9108f
/*
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.inspector
;
import
android.util.Pair
;
import
com.didichuxing.doraemonkit.kit.network.core.NetworkInterpreter
;
import
java.util.ArrayList
;
public
class
URLConnectionInspectorHeaders
implements
NetworkInterpreter
.
InspectorHeaders
{
private
final
ArrayList
<
Pair
<
String
,
String
>>
mHeaders
;
public
URLConnectionInspectorHeaders
(
ArrayList
<
Pair
<
String
,
String
>>
headers
)
{
mHeaders
=
headers
;
}
@Override
public
int
headerCount
()
{
return
mHeaders
.
size
();
}
@Override
public
String
headerName
(
int
index
)
{
return
mHeaders
.
get
(
index
).
first
;
}
@Override
public
String
headerValue
(
int
index
)
{
return
mHeaders
.
get
(
index
).
second
;
}
@Override
public
String
firstHeaderValue
(
String
name
)
{
int
N
=
headerCount
();
for
(
int
i
=
0
;
i
<
N
;
i
++)
{
if
(
name
.
equalsIgnoreCase
(
headerName
(
i
)))
{
return
headerValue
(
i
);
}
}
return
null
;
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/inspector/URLConnectionInspectorRequest.java
已删除
100644 → 0
浏览文件 @
41b9108f
/*
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.inspector
;
import
androidx.annotation.Nullable
;
import
android.util.Pair
;
import
com.didichuxing.doraemonkit.kit.network.core.NetworkInterpreter
;
import
java.io.IOException
;
import
java.util.ArrayList
;
public
class
URLConnectionInspectorRequest
extends
URLConnectionInspectorHeaders
implements
NetworkInterpreter
.
InspectorRequest
{
private
final
int
mRequestId
;
private
final
String
mUrl
;
private
final
String
mMethod
;
public
URLConnectionInspectorRequest
(
int
requestId
,
ArrayList
<
Pair
<
String
,
String
>>
header
,
String
url
,
String
method
)
{
super
(
header
);
mRequestId
=
requestId
;
mUrl
=
url
;
mMethod
=
method
;
}
@Override
public
int
id
()
{
return
mRequestId
;
}
@Override
public
String
url
()
{
return
mUrl
;
}
@Override
public
String
method
()
{
return
mMethod
;
}
@Nullable
@Override
public
byte
[]
body
()
throws
IOException
{
return
null
;
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/inspector/URLConnectionInspectorResponse.java
已删除
100644 → 0
浏览文件 @
41b9108f
/*
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.inspector
;
import
android.util.Pair
;
import
com.didichuxing.doraemonkit.kit.network.core.NetworkInterpreter
;
import
java.util.ArrayList
;
public
class
URLConnectionInspectorResponse
extends
URLConnectionInspectorHeaders
implements
NetworkInterpreter
.
InspectorResponse
{
private
final
int
mRequestId
;
private
final
String
mUrl
;
private
final
int
mStatusCode
;
public
URLConnectionInspectorResponse
(
int
requestId
,
ArrayList
<
Pair
<
String
,
String
>>
header
,
String
url
,
int
statusCode
)
{
super
(
header
);
mRequestId
=
requestId
;
mUrl
=
url
;
mStatusCode
=
statusCode
;
}
@Override
public
int
requestId
()
{
return
mRequestId
;
}
@Override
public
String
url
()
{
return
mUrl
;
}
@Override
public
int
statusCode
()
{
return
mStatusCode
;
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/interceptor/DKInterceptor.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor
;
import
androidx.annotation.NonNull
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpRequestChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpRequestStreamChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpResponseChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpResponseStreamChain
;
import
java.io.IOException
;
/**
*/
public
interface
DKInterceptor
<
T
,
S
>
{
/**
* 拦截请求,处理header、method之类的信息
* @param chain
* @param request
* @throws IOException
*/
void
intercept
(
@NonNull
HttpRequestChain
chain
,
@NonNull
T
request
)
throws
IOException
;
/**
* 拦截响应,处理header、statusCode之类的信息
* @param chain
* @param response
* @throws IOException
*/
void
intercept
(
@NonNull
HttpResponseChain
chain
,
@NonNull
S
response
)
throws
IOException
;
/**
* 拦截请求流,用以对post body做处理
* @param chain
* @param request
* @throws IOException
*/
void
intercept
(
@NonNull
HttpRequestStreamChain
chain
,
@NonNull
T
request
)
throws
IOException
;
/**
* 拦截响应流,用以对返回值做处理
* @param chain
* @param response
* @throws IOException
*/
void
intercept
(
@NonNull
HttpResponseStreamChain
chain
,
@NonNull
S
response
)
throws
IOException
;
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/interceptor/HttpMonitorInterceptor.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor
;
import
android.util.Pair
;
import
androidx.annotation.NonNull
;
import
com.didichuxing.doraemonkit.kit.network.NetworkManager
;
import
com.didichuxing.doraemonkit.kit.network.bean.NetworkRecord
;
import
com.didichuxing.doraemonkit.kit.network.core.DefaultResponseHandler
;
import
com.didichuxing.doraemonkit.kit.network.core.NetworkInterpreter
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpResponse
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.inspector.URLConnectionInspectorRequest
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.inspector.URLConnectionInspectorResponse
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpRequest
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpRequestChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpRequestStreamChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpResponseChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpResponseStreamChain
;
import
com.didichuxing.doraemonkit.kit.network.stream.HttpOutputStreamProxy
;
import
com.didichuxing.doraemonkit.kit.network.stream.OutputStreamProxy
;
import
com.didichuxing.doraemonkit.kit.network.utils.StreamUtil
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
/**
* @desc: 监听HttpUrlConnection数据的拦截器
*/
public
class
HttpMonitorInterceptor
implements
DKInterceptor
<
HttpRequest
,
HttpResponse
>
{
private
final
NetworkInterpreter
mInterpreter
;
private
final
int
mId
;
public
HttpMonitorInterceptor
()
{
mInterpreter
=
NetworkInterpreter
.
get
();
mId
=
NetworkInterpreter
.
get
().
nextRequestId
();
}
@Override
public
void
intercept
(
@NonNull
HttpRequestChain
chain
,
@NonNull
HttpRequest
request
)
throws
IOException
{
int
requestId
=
mId
;
if
(
NetworkManager
.
get
().
getRecord
(
requestId
)
!=
null
)
{
chain
.
process
(
request
);
return
;
}
ArrayList
<
Pair
<
String
,
String
>>
header
=
StreamUtil
.
convertHeaders
(
request
.
getHeaders
());
URLConnectionInspectorRequest
inspectorRequest
=
new
URLConnectionInspectorRequest
(
requestId
,
header
,
request
.
getUrl
(),
request
.
getMethod
());
mInterpreter
.
createRecord
(
requestId
,
inspectorRequest
);
chain
.
process
(
request
);
}
@Override
public
void
intercept
(
@NonNull
HttpResponseChain
chain
,
@NonNull
HttpResponse
response
)
throws
IOException
{
int
id
=
mId
;
NetworkRecord
record
=
NetworkManager
.
get
().
getRecord
(
id
);
if
(
record
==
null
)
{
chain
.
process
(
response
);
return
;
}
ArrayList
<
Pair
<
String
,
String
>>
header
=
StreamUtil
.
convertHeaders
(
response
.
getHeaders
());
URLConnectionInspectorResponse
urlConnectionInspectorResponse
=
new
URLConnectionInspectorResponse
(
mId
,
header
,
response
.
getUrl
(),
response
.
getStatusCode
());
mInterpreter
.
fetchResponseInfo
(
record
,
urlConnectionInspectorResponse
);
chain
.
process
(
response
);
}
@Override
public
void
intercept
(
@NonNull
HttpRequestStreamChain
chain
,
@NonNull
HttpRequest
request
)
throws
IOException
{
int
id
=
mId
;
NetworkRecord
record
=
NetworkManager
.
get
().
getRecord
(
id
);
if
(
record
==
null
)
{
chain
.
process
(
request
);
return
;
}
OutputStreamProxy
outputStream
=
new
HttpOutputStreamProxy
(
request
.
getOutputStream
(),
mId
,
mInterpreter
);
request
.
setOutputStream
(
outputStream
);
chain
.
process
(
request
);
}
@Override
public
void
intercept
(
@NonNull
HttpResponseStreamChain
chain
,
@NonNull
HttpResponse
response
)
throws
IOException
{
int
id
=
mId
;
NetworkRecord
record
=
NetworkManager
.
get
().
getRecord
(
id
);
if
(
record
==
null
)
{
chain
.
process
(
response
);
return
;
}
InputStream
responseStream
=
mInterpreter
.
interpretResponseStream
(
response
.
getHeaderField
(
"Content-Type"
),
response
.
getInputStream
(),
new
DefaultResponseHandler
(
mInterpreter
,
id
,
record
));
response
.
setInputStream
(
responseStream
);
chain
.
process
(
response
);
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/interceptor/LargePictureInterceptor.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor
;
import
androidx.annotation.NonNull
;
import
android.text.TextUtils
;
import
com.didichuxing.doraemonkit.kit.largepicture.LargePictureManager
;
import
com.didichuxing.doraemonkit.kit.network.core.ResourceType
;
import
com.didichuxing.doraemonkit.kit.network.core.ResourceTypeHelper
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpRequest
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpResponse
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpRequestChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpRequestStreamChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpResponseChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpResponseStreamChain
;
import
java.io.IOException
;
/**
* @desc: 大图拦截器
*/
public
class
LargePictureInterceptor
implements
DKInterceptor
<
HttpRequest
,
HttpResponse
>
{
public
static
final
String
TAG
=
"LargePictureInterceptor"
;
public
LargePictureInterceptor
()
{
}
private
ResourceTypeHelper
mResourceTypeHelper
;
@Override
public
void
intercept
(
@NonNull
HttpRequestChain
chain
,
@NonNull
HttpRequest
request
)
throws
IOException
{
chain
.
process
(
request
);
}
@Override
public
void
intercept
(
@NonNull
HttpResponseChain
chain
,
@NonNull
HttpResponse
response
)
throws
IOException
{
String
contentType
=
response
.
getHeaderField
(
"Content-Type"
);
ResourceType
resourceType
=
contentType
!=
null
?
getResourceTypeHelper
().
determineResourceType
(
contentType
)
:
null
;
if
(
resourceType
==
ResourceType
.
IMAGE
)
{
processResponse
(
response
);
}
chain
.
process
(
response
);
}
@Override
public
void
intercept
(
@NonNull
HttpRequestStreamChain
chain
,
@NonNull
HttpRequest
request
)
throws
IOException
{
chain
.
process
(
request
);
}
@Override
public
void
intercept
(
@NonNull
HttpResponseStreamChain
chain
,
@NonNull
HttpResponse
response
)
throws
IOException
{
chain
.
process
(
response
);
}
private
ResourceTypeHelper
getResourceTypeHelper
()
{
if
(
mResourceTypeHelper
==
null
)
{
mResourceTypeHelper
=
new
ResourceTypeHelper
();
}
return
mResourceTypeHelper
;
}
private
void
processResponse
(
HttpResponse
response
)
{
String
field
=
response
.
getHeaderField
(
"Content-Length"
);
if
(!
TextUtils
.
isEmpty
(
field
))
{
LargePictureManager
.
getInstance
().
process
(
response
.
getUrl
(),
Integer
.
parseInt
(
field
));
}
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/interceptor/MockInterceptor.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor
;
import
androidx.annotation.NonNull
;
import
com.didichuxing.doraemonkit.kit.network.core.ResourceTypeHelper
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpRequest
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpResponse
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpRequestChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpRequestStreamChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpResponseChain
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.chain.HttpResponseStreamChain
;
import
com.didichuxing.doraemonkit.okgo.DokitOkGo
;
import
java.io.IOException
;
import
okhttp3.HttpUrl
;
/**
* @author jintai
* @desc: 接口mock拦截器
*/
public
class
MockInterceptor
implements
DKInterceptor
<
HttpRequest
,
HttpResponse
>
{
public
static
final
String
TAG
=
"MockInterceptor"
;
public
MockInterceptor
()
{
}
private
ResourceTypeHelper
mResourceTypeHelper
;
@Override
public
void
intercept
(
@NonNull
HttpRequestChain
chain
,
@NonNull
HttpRequest
oldRequest
)
throws
IOException
{
chain
.
process
(
oldRequest
);
}
/**
* 命中拦截
*
* @param chain
* @param response
* @throws IOException
*/
@Override
public
void
intercept
(
@NonNull
HttpResponseChain
chain
,
@NonNull
HttpResponse
response
)
throws
IOException
{
try
{
httpProxy
(
response
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
chain
.
process
(
response
);
}
@Override
public
void
intercept
(
@NonNull
HttpRequestStreamChain
chain
,
@NonNull
HttpRequest
request
)
throws
IOException
{
chain
.
process
(
request
);
}
@Override
public
void
intercept
(
@NonNull
HttpResponseStreamChain
chain
,
@NonNull
HttpResponse
response
)
throws
IOException
{
try
{
httpProxy
(
response
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
chain
.
process
(
response
);
}
/**
* 将HttpUrlConnection请求代理成OkHttp发送
*
* @param httpResponse
* @throws Exception
*/
private
void
httpProxy
(
HttpResponse
httpResponse
)
throws
Exception
{
HttpUrl
mockUrl
=
HttpUrl
.
parse
(
httpResponse
.
getUrl
());
if
(
mockUrl
!=
null
)
{
HttpUrl
originUrl
=
HttpUrl
.
parse
(
mockUrl
.
queryParameter
(
"originUrl"
));
if
(
originUrl
!=
null
)
{
//用okhttp代理发送
DokitOkGo
.<
String
>
get
(
originUrl
.
toString
()).
execute
();
}
}
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/proxy/HttpUrlConnectionProxy.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.proxy
;
import
android.util.Log
;
import
com.didichuxing.doraemonkit.kit.network.NetworkManager
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpChainFacade
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpRequest
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpResponse
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.DKInterceptor
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.HttpMonitorInterceptor
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.LargePictureInterceptor
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.MockInterceptor
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.net.HttpURLConnection
;
import
java.net.ProtocolException
;
import
java.net.URL
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
/**
* @desc: UrlConnection代理类,用以解析请求
*/
public
class
HttpUrlConnectionProxy
extends
HttpURLConnection
{
private
final
String
TAG
=
"HttpUrlConnectionProxy"
;
private
final
boolean
DEBUG
=
true
;
private
final
HttpURLConnection
mSourceConnection
;
private
List
<
DKInterceptor
>
mInterceptors
=
new
ArrayList
<>();
private
final
HttpRequest
mHttpRequest
;
private
final
HttpResponse
mHttpResponse
;
private
final
HttpChainFacade
mHttpChainFacade
;
public
HttpUrlConnectionProxy
(
HttpURLConnection
con
,
boolean
isMock
)
{
super
(
con
.
getURL
());
mSourceConnection
=
con
;
//mock
if
(
isMock
)
{
mInterceptors
.
add
(
new
MockInterceptor
());
}
if
(
NetworkManager
.
isActive
())
{
mInterceptors
.
add
(
new
HttpMonitorInterceptor
());
//https的大图检测拦截器
mInterceptors
.
add
(
new
LargePictureInterceptor
());
}
mHttpRequest
=
new
HttpRequest
(
con
);
mHttpResponse
=
new
HttpResponse
(
con
);
mHttpChainFacade
=
new
HttpChainFacade
(
mInterceptors
);
}
@Override
public
void
addRequestProperty
(
String
field
,
String
newValue
)
{
mSourceConnection
.
addRequestProperty
(
field
,
newValue
);
}
@Override
public
void
disconnect
()
{
if
(
DEBUG
)
{
Log
.
d
(
TAG
,
"disconnect. "
);
}
mSourceConnection
.
disconnect
();
}
@Override
public
boolean
usingProxy
()
{
return
mSourceConnection
.
usingProxy
();
}
@Override
public
void
connect
()
throws
IOException
{
preConnect
();
try
{
mSourceConnection
.
connect
();
}
catch
(
IOException
e
)
{
throw
e
;
}
}
/**
*
*/
public
void
preConnect
()
throws
IOException
{
mHttpChainFacade
.
process
(
mHttpRequest
);
}
public
void
postConnect
(
int
statusCode
)
throws
IOException
{
mHttpResponse
.
setStatusCode
(
statusCode
);
mHttpChainFacade
.
process
(
mHttpResponse
);
}
@Override
public
boolean
getAllowUserInteraction
()
{
return
mSourceConnection
.
getAllowUserInteraction
();
}
@Override
public
int
getConnectTimeout
()
{
return
mSourceConnection
.
getConnectTimeout
();
}
@Override
public
Object
getContent
()
throws
IOException
{
return
mSourceConnection
.
getContent
();
}
@SuppressWarnings
(
"rawtypes"
)
@Override
public
Object
getContent
(
Class
[]
types
)
throws
IOException
{
return
mSourceConnection
.
getContent
(
types
);
}
@Override
public
String
getContentEncoding
()
{
return
mSourceConnection
.
getContentEncoding
();
}
@Override
public
int
getContentLength
()
{
return
mSourceConnection
.
getContentLength
();
}
@Override
public
String
getContentType
()
{
return
mSourceConnection
.
getContentType
();
}
@Override
public
long
getDate
()
{
return
mSourceConnection
.
getDate
();
}
@Override
public
InputStream
getErrorStream
()
{
return
mSourceConnection
.
getErrorStream
();
}
@Override
public
long
getHeaderFieldDate
(
String
field
,
long
defaultValue
)
{
return
mSourceConnection
.
getHeaderFieldDate
(
field
,
defaultValue
);
}
@Override
public
boolean
getInstanceFollowRedirects
()
{
return
mSourceConnection
.
getInstanceFollowRedirects
();
}
@Override
public
java
.
security
.
Permission
getPermission
()
throws
IOException
{
return
mSourceConnection
.
getPermission
();
}
@Override
public
String
getRequestMethod
()
{
return
mSourceConnection
.
getRequestMethod
();
}
@Override
public
int
getResponseCode
()
throws
IOException
{
preConnect
();
int
code
=
mSourceConnection
.
getResponseCode
();
postConnect
(
code
);
return
code
;
}
@Override
public
String
getResponseMessage
()
throws
IOException
{
return
mSourceConnection
.
getResponseMessage
();
}
@Override
public
void
setChunkedStreamingMode
(
int
chunkLength
)
{
mSourceConnection
.
setChunkedStreamingMode
(
chunkLength
);
}
@Override
public
void
setFixedLengthStreamingMode
(
int
contentLength
)
{
mSourceConnection
.
setFixedLengthStreamingMode
(
contentLength
);
}
@Override
public
void
setInstanceFollowRedirects
(
boolean
followRedirects
)
{
mSourceConnection
.
setInstanceFollowRedirects
(
followRedirects
);
}
@Override
public
void
setRequestMethod
(
String
method
)
throws
ProtocolException
{
mSourceConnection
.
setRequestMethod
(
method
);
}
@Override
public
boolean
getDefaultUseCaches
()
{
return
mSourceConnection
.
getDefaultUseCaches
();
}
@Override
public
boolean
getDoInput
()
{
return
mSourceConnection
.
getDoInput
();
}
@Override
public
boolean
getDoOutput
()
{
return
mSourceConnection
.
getDoOutput
();
}
@Override
public
long
getExpiration
()
{
return
mSourceConnection
.
getExpiration
();
}
@Override
public
String
getHeaderField
(
int
pos
)
{
return
mSourceConnection
.
getHeaderField
(
pos
);
}
@Override
public
String
getHeaderField
(
String
key
)
{
return
mSourceConnection
.
getHeaderField
(
key
);
}
@Override
public
int
getHeaderFieldInt
(
String
field
,
int
defaultValue
)
{
return
mSourceConnection
.
getHeaderFieldInt
(
field
,
defaultValue
);
}
@Override
public
String
getHeaderFieldKey
(
int
paramInt
)
{
return
mSourceConnection
.
getHeaderFieldKey
(
paramInt
);
}
@SuppressWarnings
({
"unchecked"
,
"rawtypes"
})
@Override
public
Map
<
String
,
List
<
String
>>
getHeaderFields
()
{
return
mSourceConnection
.
getRequestProperties
();
}
@Override
public
long
getIfModifiedSince
()
{
return
mSourceConnection
.
getIfModifiedSince
();
}
@Override
public
InputStream
getInputStream
()
throws
IOException
{
mHttpResponse
.
setInputStream
(
mSourceConnection
.
getInputStream
());
mHttpChainFacade
.
processStream
(
mHttpResponse
);
return
mHttpResponse
.
getInputStream
();
}
@Override
public
long
getLastModified
()
{
return
mSourceConnection
.
getLastModified
();
}
@Override
public
OutputStream
getOutputStream
()
throws
IOException
{
mHttpRequest
.
setOutputStream
(
mSourceConnection
.
getOutputStream
());
mHttpChainFacade
.
processStream
(
mHttpRequest
);
return
mHttpRequest
.
getOutputStream
();
}
@Override
public
int
getReadTimeout
()
{
return
mSourceConnection
.
getReadTimeout
();
}
@Override
public
Map
<
String
,
List
<
String
>>
getRequestProperties
()
{
return
mSourceConnection
.
getRequestProperties
();
}
@Override
public
String
getRequestProperty
(
String
field
)
{
return
mSourceConnection
.
getRequestProperty
(
field
);
}
@Override
public
URL
getURL
()
{
return
mSourceConnection
.
getURL
();
}
@Override
public
boolean
getUseCaches
()
{
return
mSourceConnection
.
getUseCaches
();
}
@Override
public
void
setAllowUserInteraction
(
boolean
newValue
)
{
mSourceConnection
.
setAllowUserInteraction
(
newValue
);
}
@Override
public
void
setConnectTimeout
(
int
timeout
)
{
mSourceConnection
.
setConnectTimeout
(
timeout
);
}
@Override
public
void
setDefaultUseCaches
(
boolean
newValue
)
{
mSourceConnection
.
setDefaultUseCaches
(
newValue
);
}
@Override
public
void
setDoInput
(
boolean
newValue
)
{
mSourceConnection
.
setDoInput
(
newValue
);
}
@Override
public
void
setDoOutput
(
boolean
newValue
)
{
mSourceConnection
.
setDoOutput
(
newValue
);
}
@Override
public
void
setIfModifiedSince
(
long
newValue
)
{
mSourceConnection
.
setIfModifiedSince
(
newValue
);
}
@Override
public
void
setReadTimeout
(
int
timeout
)
{
mSourceConnection
.
setReadTimeout
(
timeout
);
}
@Override
public
void
setRequestProperty
(
String
field
,
String
newValue
)
{
mSourceConnection
.
setRequestProperty
(
field
,
newValue
);
}
@Override
public
void
setUseCaches
(
boolean
newValue
)
{
mSourceConnection
.
setUseCaches
(
newValue
);
}
@Override
public
String
toString
()
{
if
(
mSourceConnection
==
null
)
{
return
"this connection object is null"
;
}
else
{
return
mSourceConnection
.
toString
();
}
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/httpurlconnection/proxy/HttpsUrlConnectionProxy.java
已删除
100644 → 0
浏览文件 @
41b9108f
package
com.didichuxing.doraemonkit.kit.network.httpurlconnection.proxy
;
import
android.util.Log
;
import
com.didichuxing.doraemonkit.kit.network.NetworkManager
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.HttpMonitorInterceptor
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.LargePictureInterceptor
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.DKInterceptor
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpChainFacade
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpRequest
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.HttpResponse
;
import
com.didichuxing.doraemonkit.kit.network.httpurlconnection.interceptor.MockInterceptor
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.net.ProtocolException
;
import
java.net.URL
;
import
java.security.cert.Certificate
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
javax.net.ssl.HttpsURLConnection
;
import
javax.net.ssl.SSLPeerUnverifiedException
;
/**
* @desc: UrlConnection代理类,用以解析请求
*/
public
class
HttpsUrlConnectionProxy
extends
HttpsURLConnection
{
private
final
String
TAG
=
"HttpUrlConnectionProxy"
;
private
final
boolean
DEBUG
=
true
;
private
final
HttpsURLConnection
mSourceConnection
;
private
List
<
DKInterceptor
>
mInterceptors
=
new
ArrayList
<>();
private
final
HttpRequest
mHttpRequest
;
private
final
HttpResponse
mHttpResponse
;
private
final
HttpChainFacade
mHttpChainFacade
;
public
HttpsUrlConnectionProxy
(
HttpsURLConnection
con
,
boolean
isMock
)
{
super
(
con
.
getURL
());
mSourceConnection
=
con
;
//mock
if
(
isMock
)
{
mInterceptors
.
add
(
new
MockInterceptor
());
}
if
(
NetworkManager
.
isActive
())
{
mInterceptors
.
add
(
new
HttpMonitorInterceptor
());
//https的大图检测拦截器
mInterceptors
.
add
(
new
LargePictureInterceptor
());
}
mHttpRequest
=
new
HttpRequest
(
con
);
mHttpResponse
=
new
HttpResponse
(
con
);
mHttpChainFacade
=
new
HttpChainFacade
(
mInterceptors
);
}
@Override
public
String
getCipherSuite
()
{
return
mSourceConnection
.
getCipherSuite
();
}
@Override
public
Certificate
[]
getLocalCertificates
()
{
return
mSourceConnection
.
getLocalCertificates
();
}
@Override
public
Certificate
[]
getServerCertificates
()
throws
SSLPeerUnverifiedException
{
return
mSourceConnection
.
getServerCertificates
();
}
@Override
public
void
addRequestProperty
(
String
field
,
String
newValue
)
{
mSourceConnection
.
addRequestProperty
(
field
,
newValue
);
}
@Override
public
void
disconnect
()
{
if
(
DEBUG
)
{
Log
.
d
(
TAG
,
"disconnect. "
);
}
mSourceConnection
.
disconnect
();
}
@Override
public
boolean
usingProxy
()
{
return
mSourceConnection
.
usingProxy
();
}
@Override
public
void
connect
()
throws
IOException
{
preConnect
();
try
{
mSourceConnection
.
connect
();
}
catch
(
IOException
e
)
{
throw
e
;
}
}
/**
*
*/
public
void
preConnect
()
throws
IOException
{
mHttpChainFacade
.
process
(
mHttpRequest
);
}
public
void
postConnect
(
int
statusCode
)
throws
IOException
{
mHttpResponse
.
setStatusCode
(
statusCode
);
mHttpChainFacade
.
process
(
mHttpResponse
);
}
@Override
public
boolean
getAllowUserInteraction
()
{
return
mSourceConnection
.
getAllowUserInteraction
();
}
@Override
public
int
getConnectTimeout
()
{
return
mSourceConnection
.
getConnectTimeout
();
}
@Override
public
Object
getContent
()
throws
IOException
{
return
mSourceConnection
.
getContent
();
}
@SuppressWarnings
(
"rawtypes"
)
@Override
public
Object
getContent
(
Class
[]
types
)
throws
IOException
{
return
mSourceConnection
.
getContent
(
types
);
}
@Override
public
String
getContentEncoding
()
{
return
mSourceConnection
.
getContentEncoding
();
}
@Override
public
int
getContentLength
()
{
return
mSourceConnection
.
getContentLength
();
}
@Override
public
String
getContentType
()
{
return
mSourceConnection
.
getContentType
();
}
@Override
public
long
getDate
()
{
return
mSourceConnection
.
getDate
();
}
@Override
public
InputStream
getErrorStream
()
{
return
mSourceConnection
.
getErrorStream
();
}
@Override
public
long
getHeaderFieldDate
(
String
field
,
long
defaultValue
)
{
return
mSourceConnection
.
getHeaderFieldDate
(
field
,
defaultValue
);
}
@Override
public
boolean
getInstanceFollowRedirects
()
{
return
mSourceConnection
.
getInstanceFollowRedirects
();
}
@Override
public
java
.
security
.
Permission
getPermission
()
throws
IOException
{
return
mSourceConnection
.
getPermission
();
}
@Override
public
String
getRequestMethod
()
{
return
mSourceConnection
.
getRequestMethod
();
}
@Override
public
int
getResponseCode
()
throws
IOException
{
preConnect
();
int
code
=
mSourceConnection
.
getResponseCode
();
postConnect
(
code
);
return
code
;
}
@Override
public
String
getResponseMessage
()
throws
IOException
{
return
mSourceConnection
.
getResponseMessage
();
}
@Override
public
void
setChunkedStreamingMode
(
int
chunkLength
)
{
mSourceConnection
.
setChunkedStreamingMode
(
chunkLength
);
}
@Override
public
void
setFixedLengthStreamingMode
(
int
contentLength
)
{
mSourceConnection
.
setFixedLengthStreamingMode
(
contentLength
);
}
@Override
public
void
setInstanceFollowRedirects
(
boolean
followRedirects
)
{
mSourceConnection
.
setInstanceFollowRedirects
(
followRedirects
);
}
@Override
public
void
setRequestMethod
(
String
method
)
throws
ProtocolException
{
mSourceConnection
.
setRequestMethod
(
method
);
}
@Override
public
boolean
getDefaultUseCaches
()
{
return
mSourceConnection
.
getDefaultUseCaches
();
}
@Override
public
boolean
getDoInput
()
{
return
mSourceConnection
.
getDoInput
();
}
@Override
public
boolean
getDoOutput
()
{
return
mSourceConnection
.
getDoOutput
();
}
@Override
public
long
getExpiration
()
{
return
mSourceConnection
.
getExpiration
();
}
@Override
public
String
getHeaderField
(
int
pos
)
{
return
mSourceConnection
.
getHeaderField
(
pos
);
}
@Override
public
String
getHeaderField
(
String
key
)
{
return
mSourceConnection
.
getHeaderField
(
key
);
}
@Override
public
int
getHeaderFieldInt
(
String
field
,
int
defaultValue
)
{
return
mSourceConnection
.
getHeaderFieldInt
(
field
,
defaultValue
);
}
@Override
public
String
getHeaderFieldKey
(
int
paramInt
)
{
return
mSourceConnection
.
getHeaderFieldKey
(
paramInt
);
}
@SuppressWarnings
({
"unchecked"
,
"rawtypes"
})
@Override
public
Map
<
String
,
List
<
String
>>
getHeaderFields
()
{
return
mSourceConnection
.
getHeaderFields
();
}
@Override
public
long
getIfModifiedSince
()
{
return
mSourceConnection
.
getIfModifiedSince
();
}
@Override
public
InputStream
getInputStream
()
throws
IOException
{
mHttpResponse
.
setInputStream
(
mSourceConnection
.
getInputStream
());
mHttpChainFacade
.
processStream
(
mHttpResponse
);
return
mHttpResponse
.
getInputStream
();
}
@Override
public
long
getLastModified
()
{
return
mSourceConnection
.
getLastModified
();
}
@Override
public
OutputStream
getOutputStream
()
throws
IOException
{
mHttpRequest
.
setOutputStream
(
mSourceConnection
.
getOutputStream
());
mHttpChainFacade
.
processStream
(
mHttpRequest
);
return
mHttpRequest
.
getOutputStream
();
}
@Override
public
int
getReadTimeout
()
{
return
mSourceConnection
.
getReadTimeout
();
}
@Override
public
Map
<
String
,
List
<
String
>>
getRequestProperties
()
{
return
mSourceConnection
.
getRequestProperties
();
}
@Override
public
String
getRequestProperty
(
String
field
)
{
return
mSourceConnection
.
getRequestProperty
(
field
);
}
@Override
public
URL
getURL
()
{
return
mSourceConnection
.
getURL
();
}
@Override
public
boolean
getUseCaches
()
{
return
mSourceConnection
.
getUseCaches
();
}
@Override
public
void
setAllowUserInteraction
(
boolean
newValue
)
{
mSourceConnection
.
setAllowUserInteraction
(
newValue
);
}
@Override
public
void
setConnectTimeout
(
int
timeout
)
{
mSourceConnection
.
setConnectTimeout
(
timeout
);
}
@Override
public
void
setDefaultUseCaches
(
boolean
newValue
)
{
mSourceConnection
.
setDefaultUseCaches
(
newValue
);
}
@Override
public
void
setDoInput
(
boolean
newValue
)
{
mSourceConnection
.
setDoInput
(
newValue
);
}
@Override
public
void
setDoOutput
(
boolean
newValue
)
{
mSourceConnection
.
setDoOutput
(
newValue
);
}
@Override
public
void
setIfModifiedSince
(
long
newValue
)
{
mSourceConnection
.
setIfModifiedSince
(
newValue
);
}
@Override
public
void
setReadTimeout
(
int
timeout
)
{
mSourceConnection
.
setReadTimeout
(
timeout
);
}
@Override
public
void
setRequestProperty
(
String
field
,
String
newValue
)
{
mSourceConnection
.
setRequestProperty
(
field
,
newValue
);
}
@Override
public
void
setUseCaches
(
boolean
newValue
)
{
mSourceConnection
.
setUseCaches
(
newValue
);
}
@Override
public
String
toString
()
{
if
(
mSourceConnection
==
null
)
{
return
"this connection object is null"
;
}
else
{
return
mSourceConnection
.
toString
();
}
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/okhttp/interceptor/LargePictureInterceptor.java
浏览文件 @
e1d41994
...
...
@@ -3,6 +3,7 @@ package com.didichuxing.doraemonkit.kit.network.okhttp.interceptor;
import
android.text.TextUtils
;
import
com.didichuxing.doraemonkit.config.PerformanceSpInfoConfig
;
import
com.didichuxing.doraemonkit.kit.largepicture.LargePictureManager
;
import
com.didichuxing.doraemonkit.kit.network.okhttp.InterceptorUtil
;
...
...
@@ -26,7 +27,9 @@ public class LargePictureInterceptor implements Interceptor {
String
contentType
=
response
.
header
(
"Content-Type"
);
if
(
InterceptorUtil
.
isImg
(
contentType
))
{
processResponse
(
response
);
if
(
PerformanceSpInfoConfig
.
isLargeImgOpen
())
{
processResponse
(
response
);
}
}
return
response
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录