总结一下java使用http发送post的方法:
1、post请求用于发送json 格式的参数:
1
2
3
4
5
6
7
8
9
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
44
45
46
|
/** * post请求(用于请求json格式的参数) * * @param url 地址 * @param params json格式的参数 * @return */ public static string dopost(string url, string params) throws exception { closeablehttpclient httpclient = httpclients.createdefault(); httppost httppost = new httppost( url ); // 创建httppost httppost.setheader( "accept" , "application/json" ); httppost.setheader( "content-type" , "application/json" ); string charset = "utf-8" ; stringentity entity = new stringentity( params, charset ); httppost.setentity( entity ); closeablehttpresponse response = null ; try { response = httpclient.execute( httppost ); statusline status = response.getstatusline(); int state = status.getstatuscode(); if (state == httpstatus.sc_ok) { httpentity responseentity = response.getentity(); string jsonstring = entityutils.tostring( responseentity ); return jsonstring; } else { logger.error( "请求返回:" + state + "(" + url + ")" ); } } finally { if (response != null ) { try { response.close(); } catch (ioexception e) { e.printstacktrace(); } } try { httpclient.close(); } catch (ioexception e) { e.printstacktrace(); } } return null ; } |
2、用于发送key-value格式的参数
1
2
3
4
5
6
7
8
9
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
44
45
46
47
48
49
50
51
|
/** * post请求(用于key-value格式的参数) * * @param url * @param params * @return */ public static string dopost(string url, map params) { bufferedreader in = null ; try { // 定义httpclient httpclient client = new defaulthttpclient(); // 实例化http方法 httppost request = new httppost(); request.seturi( new uri( url ) ); //设置参数 list<namevaluepair> nvps = new arraylist<namevaluepair>(); for (iterator iter = params.keyset().iterator(); iter.hasnext(); ) { string name = (string) iter.next(); string value = string.valueof( params.get( name ) ); nvps.add( new basicnamevaluepair( name, value ) ); //system.out.println(name +"-"+value); } request.setentity( new urlencodedformentity( nvps, http.utf_8 ) ); httpresponse response = client.execute( request ); int code = response.getstatusline().getstatuscode(); if (code == 200 ) { //请求成功 in = new bufferedreader( new inputstreamreader( response.getentity() .getcontent(), "utf-8" ) ); stringbuffer sb = new stringbuffer( "" ); string line = "" ; string nl = system.getproperty( "line.separator" ); while ((line = in.readline()) != null ) { sb.append( line + nl ); } in.close(); return sb.tostring(); } else { // system.out.println( "状态码:" + code ); return null ; } } catch (exception e) { e.printstacktrace(); return null ; } } |
第三,发送get请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
/** * get请求 * * @return */ public static string doget(string url) { try { httpclient client = new defaulthttpclient(); //发送get请求 httpget request = new httpget( url ); httpresponse response = client.execute( request ); /**请求发送成功,并得到响应**/ if (response.getstatusline().getstatuscode() == httpstatus.sc_ok) { /**读取服务器返回过来的json字符串数据**/ string strresult = entityutils.tostring( response.getentity() ); return strresult; } } catch (ioexception e) { e.printstacktrace(); } return null ; } |
以上所述是小编给大家介绍的java发送post方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:https://blog.csdn.net/xzj80927/article/details/89098334