java功能-发送http请求
一、发送json
public void test() throws IOException {
//参数封装------------------------------------------------------
Map<String, Object> jsonMap = new HashMap<String, Object>();
Map<String, Object> params1 = new HashMap<String, Object>();
List<Object> params2=new ArrayList<>();
//封装params1
//封装params2
//封装jsonMap
jsonMap.put("sendBasic", params1);
jsonMap.put("toUsers", params2);
String json = JSON.toJSONString(jsonMap);
//---建立连接---------------------------------------------------------------
URL url = new URL("http://");//请求的路径
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true); // 设置可输入
connection.setDoOutput(true); // 设置该连接是可以输出的
connection.setRequestMethod("POST");// 设置请求方式
connection.setRequestProperty("Charset", "UTF-8");
connection.setRequestProperty("Accept-Charset", "utf-8");
connection.setRequestProperty("Content-Type", "application/json;charset=utf-8");
//发送参数---------------------------------------------------------------------------
BufferedOutputStream pw = new BufferedOutputStream(connection.getOutputStream());
//发送内容转码utf-8 **必写**
pw.write(json.getBytes("UTF-8"));
pw.flush();
pw.close();
//读取响应数据---------------------------------------------------------------------------
//输入流转码utf-8 **必写**
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String line = null;
StringBuilder result = new StringBuilder();
while ((line = br.readLine()) != null) { // 读取数据
result.append(line + "\n");
}
}
httpUtil工具类
import java.io.*;
import java.net.*; import javax.net.ssl.HttpsURLConnection;
import javax.servlet.http.HttpServletRequest; /**
* http请求工具类
*
*/
public class HttpUtil2 { /**
* @Description
* @Date 15:36 2022-10-13
* @Param String url
* @Param boolean isSSL
* @Param int timeout
* @return java.net.URLConnection
*/
private static URLConnection getConn(String url, boolean isSSL,int timeout){
URL realUrl = null;
URLConnection connection = null;
try {
realUrl = new URL(url);
realUrl.openConnection();// 打开和URL之间的连接
// 开发环境打开和URL之间的连接
// Proxy proxy1 = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("代理ip", 80)); //设置代理
// URLConnection connection = realUrl.openConnection(proxy1);// 打开和URL之间的连接
if (isSSL) {
connection = (HttpsURLConnection) connection;
}
// 设置通用的请求属性
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.setConnectTimeout(timeout);//连接失效时间 1s
connection.connect();
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
} return connection; } public static String get(String url){
return get(url,false);
} /**
* 发送get请求
* @param url 链接地址
* @param isSSL 是否是https协议
* @return 返回响应字符串
*/
public static String get(String url, boolean isSSL) { String result = "";
BufferedReader in = null;
try {
URLConnection connection = getConn(url, false, 1000);
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
} finally {
// 使用finally块来关闭输入流
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
} /**
* 发送get请求
* @param url 链接地址
* @param localPath 保存到本地的全路径
* @param isSSL 是否是https协议
* @return 返回响应字符串
*/
public static String getPic(String url, String localPath,boolean isSSL) { String result = "";
BufferedReader in = null;
try {
URLConnection connection = getConn(url, false, 1000);
InputStream inputStream = connection.getInputStream();
OutputStream outputStream = new FileOutputStream(localPath);
byte[] buffer = new byte[1024];
//每次读取的字符串长度,如果为-1,代表全部读取完毕
int len = 0;
//使用一个输入流从buffer里把数据读取出来
while( (len=inputStream.read(buffer)) != -1 ){
outputStream.write(buffer,0,len);
}
// 关闭输出流
inputStream.close();
outputStream.close(); } catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
} finally {
// 使用finally块来关闭输入流
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
} /**
* 发送post请求
* @param reqUrl
* @param params
* @param isSSL
* @return
*/
public static String post(String reqUrl, String params, boolean isSSL)
{
HttpURLConnection connection = null;
String responseContent = null;
try
{
URL url = new URL(reqUrl);
connection = (HttpURLConnection) url.openConnection();
if (isSSL) {
connection = (HttpsURLConnection) connection;
}
connection.setRequestMethod("POST");
connection.setConnectTimeout(1000);
connection.setDoOutput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.connect();
OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "utf-8");
osw.write(params);
osw.flush();
osw.close(); InputStream in = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(in));
String tempLine = rd.readLine();
StringBuffer tempStr = new StringBuffer();
String crlf=System.getProperty("line.separator");
while (tempLine != null)
{
tempStr.append(tempLine);
tempStr.append(crlf);
tempLine = rd.readLine();
}
responseContent = tempStr.toString();
rd.close();
in.close();
}
catch (IOException e)
{
System.out.println("发送POST请求出现异常!" + e);
}
finally
{
if (connection != null)
{
connection.disconnect();
}
}
return responseContent;
} /**
* 获取http请求体
* @param request
* @return
* @throws IOException
*/
public static String getHttpBody(HttpServletRequest request) throws IOException{
BufferedReader br = request.getReader(); String str, wholeStr = "";
while((str = br.readLine()) != null){
wholeStr += str;
}
return wholeStr;
} public static void main(String[] args) {
} }
java功能-发送http请求的更多相关文章
- java httpclient发送json 请求 ,go服务端接收
/***java客户端发送http请求*/package com.xx.httptest; /** * Created by yq on 16/6/27. */ import java.io.IOEx ...
- java中发送http请求的方法
package org.jeecgframework.test.demo; import java.io.BufferedReader; import java.io.FileOutputStream ...
- 用java代码发送http请求
//发送post请求 PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL ...
- 对于java用发送http请求,请求内容为xml格式
import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.ByteArrayOutputStr ...
- java内部发送http请求并取得返回结果,修改response的cookie
public Object userLogin(HttpServletRequest request, HttpServletResponse response, String email, Stri ...
- java 模拟发送post请求测试
方法一: HttpClient public void postTest(HttpServletRequest request,Integer type,String phone,String pas ...
- java okhttp发送post请求
java的httpclient和okhttp请求网络,构造一个基本的post get请求,都比py的requests步骤多很多,也比py的自带包urllib麻烦些. 先封装成get post工具类,工 ...
- Java HttpURLConnection发送post请求示例
public static Map<String, Object> invokeCapp(String urlStr, Map<String, Object> params) ...
- Java httpClient 发送http请求
RestTemplate ObjectMapper将string反序列化为WeatherResponse类 RestTemplate通过spring配置注入
- Java学习笔记--通过java.net.URLConnection发送HTTP请求
http://www.cnblogs.com/nick-huang/p/3859353.html 使用Java API发送 get请求或post请求的步骤: 1. 通过统一资源定位器(java.net ...
随机推荐
- Wordpress主题twentytwelve修改首页文章摘要
方法:网站后台->外观->编辑->找到content.php文件 路径:wp-content/themes/twentytwelve/ 找到这一句: <?php if ( is ...
- Tooltip 文字提示,居中显示
Tooltip 文字提示有时候在table中无法居中显示,这个可以设置一下 <a-tooltip placement="top" overlayClassName=" ...
- Qt实现抽奖程序
一.简介 该程序命名为Lucky,实现的功能如下: 1. 加载抽奖人员名单,并保存加载路径: 2. 单击左键或者点击ctrl+s开始抽奖,并滚动显示人员名单,显示的人员名单格式为 部门-姓名. 3. ...
- 容器逃逸 --with docker.sock
容器逃逸 --with docker.sock 本人对于容器逃逸的基本理解就是用户从容器中逃出去到宿主机里去了. 本文意在记录一个使用 docker.sock 来进行容器逃逸的方法. 首先随便来个镜像 ...
- uni-app配置钉钉小程序步骤
1.创建项目 2.在项目根目录配置或者新建package.json文件,配置代码 { "uni-app": { "scripts": { "mp-di ...
- redhat安装opencv2.4.13
1.官网下载OpenCV2.4.5 http://opencv.org/ 解压到home/用户名/opencv2.4.5 2.安装cmake $sudo apt-get install cmake ...
- display和浮动
display:block; // 块元素 display: inline-block //行内和块元素 浮动 float: left; 清除浮动 clear: both; 两侧不允许有浮动 解决父级 ...
- 常见的Native Crash类型,bug解决记录
APP调用Native的jar包接口出现闪退,仅仅settings应用,其他应用调用该包接口正常使用. 猜测1. jar包为64为,settings程序为32位,版本兼容性问题.(经验证,原因确实如此 ...
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的互转 JAVA
package com.asiabasehk.cgg.util; /**火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的互转 * Created by macremote on 1 ...
- eclipse设置UTF-8(字符编码集)所有方式
一.全部方式 1.修改workspace编码 windows->preferences->gengral->workspace 选择other->UTF-8. 2.修改Con ...