温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java如何发起http请求调用post与get接口

发布时间:2022-08-11 11:19:20 来源:亿速云 阅读:495 作者:iii 栏目:开发技术

这篇“java如何发起http请求调用post与get接口”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java如何发起http请求调用post与get接口”文章吧。

    一、java调用post接口

    1、使用URLConnection或者HttpURLConnection

    java自带的,无需下载其他jar包

    URLConnection方式调用,如果接口响应码被服务端修改则无法接收到返回报文,只能当响应码正确时才能接收到返回

    public static String sendPost(String url, String param) {         OutputStreamWriter out = null;         BufferedReader in = null;         StringBuilder result = new StringBuilder("");         try {             URL realUrl = new URL(url);             // 打开和URL之间的连接             URLConnection conn = realUrl.openConnection();             // 设置通用的请求属性             conn.setRequestProperty("Content-Type","application/json;charset=UTF-8");             conn.setRequestProperty("accept", "*/*");             conn.setRequestProperty("connection", "Keep-Alive");             conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");             // 发送POST请求必须设置如下两行             conn.setDoOutput(true);             conn.setDoInput(true);             // 获取URLConnection对象对应的输出流             out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");             // 发送请求参数             out.write(param);             // flush输出流的缓冲             out.flush();             // 定义BufferedReader输入流来读取URL的响应             in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));             String line;             while ((line = in.readLine()) != null) {                 result.append(line);             }         } catch (Exception e) {             System.out.println("发送 POST 请求出现异常!"+e);             e.printStackTrace();         }         //使用finally块来关闭输出流、输入流         finally{         	if(out!=null){ try { out.close(); }catch(Exception ex){} }         	if(in!=null){ try { in.close(); }catch(Exception ex){} }         }         return result.toString();     }

    HttpURLConnection方式调用

    //ms超时毫秒,url地址,json入参 public static String httpJson(int ms,String url,String json) throws Exception{	String err = "00", line = null;	StringBuilder sb = new StringBuilder();	HttpURLConnection conn = null;	BufferedWriter out = null;	BufferedReader in = null;	try{	conn = (HttpURLConnection) (new URL(url.replaceAll("/","/"))).openConnection();	conn.setRequestMethod("POST");	conn.setDoOutput(true);	conn.setDoInput(true);	conn.setUseCaches(false);	conn.setConnectTimeout(ms);	conn.setReadTimeout(ms);	conn.setRequestProperty("Content-Type","application/json;charset=utf-8");	conn.connect();	out = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream(),"utf-8"));	out.write(new String(json.getBytes(), "utf-8"));	out.flush();//发送参数	int code = conn.getResponseCode();	if (conn.getResponseCode()==200){	in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));	while ((line=in.readLine())!=null)	sb.append(line);	}//接收返回值	}catch(Exception ex){	err=ex.getMessage();	}	try{ if (out!=null) out.close(); }catch(Exception ex){}; 	try{ if (in!=null) in.close(); }catch(Exception ex){};	try{ if (conn!=null) conn.disconnect();}catch(Exception ex){}	if (!err.equals("00")) throw new Exception(err);	return sb.toString();	}

    2、使用CloseableHttpClient

    使用的jar包

    <dependency>     <groupId>com.alibaba.csb.sdk</groupId>     <artifactId>http-client</artifactId>     <version>1.1.5.1</version> </dependency>
    public static String httpPostJson(String url,String json) throws Exception{	String data=""; 	CloseableHttpClient httpClient = null;	CloseableHttpResponse response = null;	try {	httpClient = HttpClients.createDefault();	HttpPost httppost = new HttpPost(url);	httppost.setHeader("Content-Type", "application/json;charset=UTF-8");	StringEntity se = new StringEntity(json,Charset.forName("UTF-8"));	        se.setContentType("text/json");	        se.setContentEncoding("UTF-8");	        httppost.setEntity(se);	        response = httpClient.execute(httppost);	        int code = response.getStatusLine().getStatusCode();	        System.out.println("接口响应码:"+code);	        data = EntityUtils.toString(response.getEntity(), "utf-8");	        EntityUtils.consume(response.getEntity());	} catch (Exception e) {	e.printStackTrace();	} finally {	if(response!=null){ try{response.close();}catch (IOException e){} }	if(httpClient!=null){ try{httpClient.close();}catch(IOException e){} }	}	return data;	}

    3、使用HttpCaller

    使用的jar包同第2个中的jar包。

    public static String sendPost(){	String result = "";	HttpParameters.Builder builder = HttpParameters.newBuilder();	builder.requestURL("URL") // 设置请求的URL         	.api("api") // 设置服务名         	.version("version") // 设置版本号         	.method("post") // 设置调用方式, get/post         	.accessKey("ak").secretKey("sk"); // 设置accessKey 和 设置secretKey	// 设置请求参数(json格式)         Map<String,String> param = new HashMap<String,String>();         param.put("key1","value1");         param.put("key2","value2");         //加密,没有加密则不需要encryptParam,直接用param         Map<String,String> encryptParam = new HashMap<String,String>();         encryptParam.put("key3", getData(JSON.toJSONString(param)));         ContentBody cb = new ContentBody(JSON.toJSONString(encryptParam));         builder.contentBody(cb);                  try {         	result = HttpCaller.invoke(builder.build());	} catch (Exception e) {	e.printStackTrace();	}         return result;	}	//自己的加密方式	public static String getData(String data1){	return "加密后的密文";	}

    二、java调用get接口

    使用java自带的URLConnection

    //将map型转为请求参数型 public static String getUrlData(Map<Object, Object> data) throws Exception{	StringBuffer sb = new StringBuffer();	try {	Set<Map.Entry<Object, Object>> entries = data.entrySet();	Iterator<Map.Entry<Object, Object>> iterators = entries.iterator();	while(iterators.hasNext()){	Map.Entry<Object, Object> next = iterators.next();	sb.append(next.getKey().toString().trim()).append("=").append(URLEncoder.encode(next.getValue() + "", "UTF-8").trim()).append("&");	}	sb.deleteCharAt(sb.length() - 1);	} catch (Exception e) {	sb.append(e.toString());	}	return sb.toString(); } //strUrl截止到?,例:http://127.0.0.1:8080/api/method? public static String httpGet(String strUrl){	Map<Object, Object> params = new HashMap<Object, Object>();	params.put("key1", "value1");	params.put("key2", "value2");	String url=strUrl + getUrlData(params);   	StringBuilder result = new StringBuilder();     BufferedReader in = null;     try {         URL realUrl = new URL(url);         // 打开和URL之间的连接         URLConnection connection = realUrl.openConnection();         // 设置通用的请求属性         connection.setRequestProperty("accept", "*/*");         connection.setRequestProperty("connection", "Keep-Alive");         connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");         // 建立实际的连接         connection.connect();         // 获取所有响应头字段         // 定义 BufferedReader输入流来读取URL的响应         in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));         String line;         while ((line = in.readLine()) != null) {             result.append(line);         }     } catch (Exception e) {         System.out.println("发送GET请求出现异常!" + e);         e.printStackTrace();     }     finally {     	if (in != null){ try { in.close(); }catch(Exception e2){} }     }     return result.toString(); }

    以上就是关于“java如何发起http请求调用post与get接口”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI