100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Java 常用工具类(12) : java后台发送http请求

Java 常用工具类(12) : java后台发送http请求

时间:2018-10-15 12:50:37

相关推荐

Java 常用工具类(12) : java后台发送http请求

参考 :

java http 发送post请求-json格式_Oh_go_boy的博客-CSDN博客

Java发送Http请求 - 玄同太子 - 博客园

org.apache.http 在Maven中引入依耐包提示不存在的问题_奋斗鱼-CSDN博客

maven依赖

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.5</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.1</version></dependency>

import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;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.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClientBuilder;import org.apache.http.impl.client.HttpClients;import org.apache.http.util.EntityUtils;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import .URL;import .URLConnection;import java.util.List;import java.util.Map;/*** 发送HTTP请求*/public class SendRequestUtils {public static void main(String[] args) {System.err.println(sendPostJson("http://127.0.0.1:8080/test", "{\n" +"\t\"name\": \"12\",\n" +"\t\"age\": \"12\"\n" +"}"));}/*** 发送GET请求* @param url* @return*/public static String sendGet(String url) {try {CloseableHttpClient client = null;CloseableHttpResponse response = null;try {HttpGet httpGet = new HttpGet(url);client = HttpClients.createDefault();response = client.execute(httpGet);HttpEntity entity = response.getEntity();String result = EntityUtils.toString(entity,"utf-8");// 中文乱码 result = new String(result.getBytes("ISO8859_1"), "UTF-8");return result;} finally {if (response != null) {response.close();}if (client != null) {client.close();}}} catch (Exception e) {e.printStackTrace();}return null;}/*** 向指定URL发送GET方法的请求(有点问题)** @param url 发送请求的URL* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return URL 所代表远程资源的响应结果*/public static String sendGet(String url, String param) {String result = "";BufferedReader in = null;try {String urlNameString = url + "?" + param;if (param == null) {urlNameString = url;}URL realUrl = new URL(urlNameString);// 打开和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();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {System.out.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}System.out.println(result);} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}/*** 向指定 URL 发送POST方法的请求** @param url 发送请求的 URL* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return 所代表远程资源的响应结果*/public static String sendPost(String url, String param) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性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 PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}//使用finally块来关闭输出流、输入流finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}/*** POST 发送json数据** @param url* @param json* @return*/public static String sendPostJson(String url, String json) {CloseableHttpClient client = HttpClientBuilder.create().build();HttpPost post = new HttpPost(url);String result = null;try {StringEntity s = new StringEntity(json, "utf-8");s.setContentEncoding("UTF-8");//发送json数据需要设置contentTypes.setContentType("application/json");post.setEntity(s);HttpResponse res = client.execute(post);result = EntityUtils.toString(res.getEntity(),"utf-8");} catch (Exception e) {e.printStackTrace();} finally {try {client.close();} catch (IOException e) {}}return result;}}

注: 若返回值乱码 可添加参数 "UTF-8"

in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));

JSON maven坐标

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.25</version></dependency>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。