工具类一(HttpUtils篇)

  • Post author:
  • Post category:其他


把项目里老大写的好用的工具类分享一下。觉得好用的拿去。


import

java.util.ArrayList;


import

java.util.List;


import

java.util.Map;


import

org.apache.http.HttpEntity;


import

org.apache.http.NameValuePair;


import

org.apache.http.client.config.RequestConfig;


import

org.apache.http.client.entity.UrlEncodedFormEntity;


import

org.apache.http.client.methods.CloseableHttpResponse;


import

org.apache.http.client.methods.HttpGet;


import

org.apache.http.client.methods.HttpPost;


import

org.apache.http.impl.client.CloseableHttpClient;


import

org.apache.http.impl.client.HttpClientBuilder;


import

org.apache.http.message.BasicNameValuePair;


import

org.apache.http.util.EntityUtils;


public


class

HttpUtilsTest {





//生成httpClient




private


static


final

CloseableHttpClient

httpClient

;





public


static


final

String


CHAESET


=


“utf-8”


;






static

{



RequestConfig

config

= RequestConfig.custom()



.setConnectTimeout(6000) //请求超时时间



.setSocketTimeout(6000) //响应超时时间



.build();




httpClient

= HttpClientBuilder.create()



.setDefaultRequestConfig(

config

)



.build();



}





public


static

String httpGet(String

url

)

throws

Exception {




return

httpGet(

url

,

null

);



}





public


static

String httpGet(String

url

, Map<String, String>

params

)

throws

Exception {




return

httpGet(

url

,

params

,

CHAESET

);



}






/**



*



*

@param

url



*

@param

params



*

@param

charset




*

@return



*

@throws

Exception



*/




public


static

String httpGet(String

url

, Map<String, String>

params

, String

charset

)

throws

Exception {





//构造

url




if

(

params

!=

null

&& !

params

.isEmpty()) {



List<NameValuePair>

pairs

=

new

ArrayList<NameValuePair>();




for

(Map.Entry<String, String>

entry

:

params

.entrySet()) {




if

(

entry

.getValue() !=

null

) {




pairs

.add(

new

BasicNameValuePair(

entry

.getKey(),

entry

.getValue()));



}



}




String

queryString

= EntityUtils.toString(

new

UrlEncodedFormEntity(

pairs

),

charset

);




if

(

url

.indexOf(

“?”

) != -1) {





url

+=


“&”


+

queryString

;



}

else

{





url

+=


“?”


+

queryString

;



}



}






//httpGet获取请求,返回数据



HttpGet

httpGet

=

new

HttpGet(

url

);



CloseableHttpResponse

response

=

httpClient

.execute(

httpGet

);





try

{




int


statusCode

=

response

.getStatusLine().getStatusCode();




if

(

statusCode

!= 200) {




httpGet

.abort();






throw




new


RuntimeException(

“httpClient: error status code:”

+


statusCode


);



}




HttpEntity

entity

=

response

.getEntity();



String

result

=

null

;




if

(

entity

!=

null

) {




result

= EntityUtils.toString(

entity

,

charset

);



}



EntityUtils.consume(

entity

);






return



result


;




}

finally

{




response

.close();



}



}





public


static

String httpPost(String

url

, HttpEntity

requestEntity

)

throws

Exception {




return

httpPost(

url

,

null

,

requestEntity

);



}





public


static

String httpPost(String

url

, Map<String, String>

params

, HttpEntity

requsetEntity

)

throws

Exception {





//构建

url




if

(

params

!=

null

&& !

params

.isEmpty()) {



List<NameValuePair>

pairs

=

new

ArrayList<NameValuePair>();




for

(Map.Entry<String, String>

entry

:

params

.entrySet()) {




if

(

entry

.getValue() !=

null

) {




pairs

.add(

new

BasicNameValuePair(

entry

.getKey(),

entry

.getValue()));



}



}



String

queryString

= EntityUtils.toString(

new

UrlEncodedFormEntity(

pairs

),

CHAESET

);




if

(

url

.indexOf(

“?”

) > 0) {





url

+=


“&”


+

queryString

;



}

else

{





url

+=


“?”


+

queryString

;



}



}






//httpPost请求获取数据



HttpPost

httpPost

=

new

HttpPost(

url

);





httpPost

.setEntity(

requsetEntity

);



CloseableHttpResponse

response

=

httpClient

.execute(

httpPost

);





try

{




int


statusCode

=

response

.getStatusLine().getStatusCode();




if

(

statusCode

!= 200) {




httpPost

.abort();






throw




new


RuntimeException(

“httpClient error status code:”

+


statusCode


);



}




HttpEntity

entity

=

response

.getEntity();



String

result

=

null

;




if

(

entity

!=

null

) {




result

= EntityUtils.toString(

entity

,

CHAESET

);



}



EntityUtils.consume(

entity

);






return



result


;




}

finally

{




response

.close();



}



}

}