01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
/**
* 获得httpclient实例
* @return
*/
public
static
synchronized
HttpClient getHttpClient() {
if
(httpClient ==
null
) {
HttpParams params =
new
BasicHttpParams();
// 设置一些基本参数
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, encoding);
HttpProtocolParams.setUseExpectContinue(params,
true
);
HttpProtocolParams
.setUserAgent(
params,
"Mozilla/5.0(Linux;U;Android 2.2.1;en-us;Nexus One Build.FRG83) "
+
"AppleWebKit/553.1(KHTML,like Gecko) Version/4.0 Mobile Safari/533.1"
);
// 超时设置
/* 从连接池中取连接的超时时间 */
ConnManagerParams.setTimeout(params, 1000);
/* 连接超时 */
HttpConnectionParams.setConnectionTimeout(params, 2000);
/* 请求超时 */
HttpConnectionParams.setSoTimeout(params,
4000
);
// 设置HttpClient支持HTTP和HTTPS两种模式
SchemeRegistry schReg =
new
SchemeRegistry();
schReg.register(
new
Scheme(
"http"
, PlainSocketFactory
.getSocketFactory(),
80
));
schReg.register(
new
Scheme(
"https"
, SSLSocketFactory
.getSocketFactory(),
443
));
// 使用线程安全的连接管理来创建HttpClient
ClientConnectionManager conMgr =
new
ThreadSafeClientConnManager(
params, schReg);
httpClient =
new
DefaultHttpClient(conMgr, params);
}
return
httpClient;
}
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
public
static
byte
[] httpConnect(HttpRequest request)
throws
Exception {
HttpResponse response =
null
;
if
(request
instanceof
HttpGet) {
HttpGet get = (HttpGet) request;
response = getHttpClient().execute(get);
}
else
if
(request
instanceof
HttpPost) {
HttpPost post = (HttpPost) request;
response = getHttpClient().execute(post);
}
if
(response !=
null
&& response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity resEntity = response.getEntity();
return
(resEntity ==
null
) ?
null
: EntityUtils
.toByteArray(resEntity);
}
return
null
;
}
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
/**
* 获得httpclient实例
*
* @return
*/
private
static
synchronized
HttpClient getHttpClient(HttpRequest request) {
HttpParams params =
new
BasicHttpParams();
// 设置一些基本参数
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setUseExpectContinue(params,
true
);
HttpProtocolParams
.setUserAgent(
params,
"Mozilla/5.0(Linux;U;Android 2.2.1;en-us;Nexus One Build.FRG83) "
+
"AppleWebKit/553.1(KHTML,like Gecko) Version/4.0 Mobile Safari/533.1"
);
// 超时设置
/* 从连接池中取连接的超时时间 */
ConnManagerParams.setTimeout(params, 1000 * 8);
/* 连接超时 */
HttpConnectionParams.setConnectionTimeout(params, 1000 * 10);
/* 请求超时 */
HttpConnectionParams.setSoTimeout(params,
1000
*
10
);
// 设置HttpClient支持HTTP和HTTPS两种模式
SchemeRegistry schReg =
new
SchemeRegistry();
schReg.register(
new
Scheme(
"http"
, PlainSocketFactory
.getSocketFactory(), getHttpPort(request)));
schReg.register(
new
Scheme(
"https"
,
SSLSocketFactory.getSocketFactory(), getHttpPort(request)));
// 使用线程安全的连接管理来创建HttpClient
ClientConnectionManager conMgr =
new
ThreadSafeClientConnManager(
params, schReg);
return
new
DefaultHttpClient(conMgr, params);
}
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
/**
* 通过HttpRequest实例连接网络
*
* @param request
* 网络请求,支持get和post<br>
* 若为get方式,需要传入HttpGet实例,若为post方式,传入HttpPost实例
* <a href="\"http://www.eoeandroid.com/home.php?mod=space&uid=7300\"" target="\"_blank\"">@return</a> 服务器的返回内容,这里将响应的内容处理为byte数组
* @throws Exception
*/
private
static
byte
[] httpConnect(HttpRequest request)
throws
Exception {
// Log.e("请求", CommonDefines.SESSIONID);
HttpResponse response =
null
;
if
(CommonDefines.SESSIONID !=
null
||CommonDefines.SESSIONID!=
""
) {
//设置sessionid,把第一次请求的id放在之后要请求的request报文头里
request.setHeader(
"Cookie"
, CommonDefines.SESSIONID);
}
if
(request
instanceof
HttpGet) {
HttpGet get = (HttpGet) request;
response = getHttpClient(request).execute(get);
}
else
if
(request
instanceof
HttpPost) {
HttpPost post = (HttpPost) request;
response = getHttpClient(request).execute(post);
}
if
(response !=
null
&& response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity resEntity = response.getEntity();
Header[] headers = response.getHeaders(
"set-cookie"
);
//保存服务器返回的session
for
(
int
i =
0
; i < headers.length; i++) {
// Log.e("sessionid", headers<i>.getValue());
String value = headers<i>.getValue();
CommonDefines.SESSIONID = value
.substring(
0
, value.indexOf(
";"
));
}
return
(resEntity ==
null
) ?
null
: EntityUtils
.toByteArray(resEntity);
}
return
null
;
}</i></i>
|