java通过java.net.URL发送http请求调用接口
一般在*.html,*.jsp页面中我们通过使用ajax调用接口,这个是我们通常用的。对于这些接口,大都是本公司写的接口供自己调用,所以直接用ajax就可以。但是,如果是多家公司共同开发一个东西,一个功能可能要调多个接口,一两个ajax可以在jsp页面上显示,但是如果多了,就不能写这么多ajax在前端了。这时候需要封装一成一个接口,在接口里面如何调用其他接口呢?这就用到了java.net.URL这个类。
java.net.URL用法如下
BufferedReader in=null;
java.net.HttpURLConnection conn=null;
String msg = "";// 保存调用http服务后的响应信息
try
{
//实例化url
java.net.URL url = new java.net.URL(path);
//根据url获取HttpURLConnection
conn = (java.net.HttpURLConnection) url.openConnection();
//设置请求的参数
conn.setRequestMethod("POST");
conn.setConnectTimeout(5 * 1000);// 设置连接超时时间为5秒
conn.setReadTimeout(20 * 1000);// 设置读取超时时间为20秒
conn.setDoOutput(true); // 使用 URL 连接进行输出,则将 DoOutput标志设置为 true
conn.setDoInput(true);
conn.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
//conn.setRequestProperty("Content-Encoding","gzip");
conn.setRequestProperty("Content-Length", String.valueOf(params.length())); //设置请求内容(长度)长度
OutputStream outStream = conn.getOutputStream(); // 返回写入到此连接的输出流
outStream.write(params.getBytes()); //将参数写入流中
outStream.close();//关闭流 if (conn.getResponseCode() == 200) {
// HTTP服务端返回的编码是UTF-8,故必须设置为UTF-8,保持编码统一,否则会出现中文乱码
in = new BufferedReader(new InputStreamReader((InputStream) conn.getInputStream(), "UTF-8"));
msg = in.readLine();
}
}catch(Exception ex)
{
ex.printStackTrace();
}finally
{
if(null!=in)
{
in.close();
}
if(null!=conn)
{
conn.disconnect();
}
}
return msg;
HttpUtil工具类
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import java.net.HttpURLConnection;
import java.net.URL; /**
* http工具
*
*/
public final class HttpUtil {
/**
* 模拟http协议发送get请求
**/
public static String sendGetRequest(String url) {
String result = "";
InputStream in = null; HttpURLConnection connection = null; try {
URL httpUrl = new URL(url);
connection = (HttpURLConnection) httpUrl.openConnection();
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("Charset", "UTF-8");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
connection.setRequestMethod("GET");
connection.connect(); if (connection.getResponseCode() == 200) {
in = connection.getInputStream(); ByteArrayOutputStream bs = new ByteArrayOutputStream();
int n = 0;
byte[] datas = new byte[2048]; while ((n = in.read(datas)) != -1) {
bs.write(datas, 0, n);
} bs.flush();
result = new String(bs.toByteArray(), "utf-8");
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e) {
e.printStackTrace();
} try {
connection.disconnect();
} catch (Exception ex) {
}
} return result;
} /**
* 模拟http协议发送post请求
**/
public static String sendPostRequest(String url, String param) {
InputStream in = null;
String result = "";
HttpURLConnection connection = null; try {
URL httpUrl = new URL(url);
connection = (HttpURLConnection) httpUrl.openConnection();
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("Charset", "UTF-8");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.getOutputStream().write(param.getBytes("utf-8"));
connection.getOutputStream().flush(); if (connection.getResponseCode() == 200) {
in = connection.getInputStream(); ByteArrayOutputStream bs = new ByteArrayOutputStream();
int n = 0;
byte[] datas = new byte[2048]; while ((n = in.read(datas)) != -1) {
bs.write(datas, 0, n);
} bs.flush();
result = new String(bs.toByteArray(), "utf-8");
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
} try {
connection.disconnect();
} catch (Exception ex) {
}
} return result;
} /**
* 普通post文件上传
*/
public static String upLoadAttachment(String url, String fileName, File file) {
String result = null; HttpURLConnection connection = null;
BufferedReader reader = null; try {
URL httpUrl = new URL(url);
connection = (HttpURLConnection) httpUrl.openConnection();
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("Charset", "UTF-8");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
connection.setRequestMethod("POST");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false); String bound = "----------" + System.currentTimeMillis();
connection.setRequestProperty("Content-Type",
"multipart/form-data; boundary=" + bound); StringBuilder sb = new StringBuilder();
sb.append("--");
sb.append(bound);
sb.append("\r\n");
sb.append("Content-Disposition: form-data;name=\"" + fileName +
"\";filename=\"" + file.getName() + "\"\r\n");
sb.append("Content-Type:application/octet-stream\r\n\r\n"); byte[] data = sb.toString().getBytes("utf-8");
OutputStream out = new DataOutputStream(connection.getOutputStream());
out.write(data); DataInputStream in = new DataInputStream(new FileInputStream(file));
int bytes = 0;
byte[] bufferOut = new byte[1024]; while ((bytes = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, bytes);
} in.close(); byte[] foot = ("\r\n--" + bound + "--\r\n").getBytes("utf-8"); // 定义最后数据分隔线
out.write(foot);
out.flush();
out.close(); InputStream inn = connection.getInputStream();
ByteArrayOutputStream bs = new ByteArrayOutputStream();
int n = 0;
byte[] datas = new byte[2048]; while ((n = inn.read(datas)) != -1) {
bs.write(datas, 0, n);
} bs.flush();
result = new String(bs.toByteArray(), "utf-8"); return result;
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
connection.disconnect();
} catch (Exception ex) {
}
} return null;
} /**
* post文件上传 - 使用InputStream输入流(例如MultipartFile从前端获取文件后转发给其他的服务器)
*/
public static String upLoadAttachment(String url,String keyName, String fileName, InputStream fins) {
String result = null; HttpURLConnection connection = null;
BufferedReader reader = null; try {
URL httpUrl = new URL(url);
connection = (HttpURLConnection) httpUrl.openConnection();
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("Charset", "UTF-8");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
connection.setRequestMethod("POST");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false); String bound = "----------" + System.currentTimeMillis();
connection.setRequestProperty("Content-Type",
"multipart/form-data; boundary=" + bound); StringBuilder sb = new StringBuilder();
sb.append("--");
sb.append(bound);
sb.append("\r\n");
sb.append("Content-Disposition: form-data;name=\"" + keyName +
"\";filename=\"" + fileName + "\"\r\n");
sb.append("Content-Type:application/octet-stream\r\n\r\n"); byte[] data = sb.toString().getBytes("utf-8");
OutputStream out = new DataOutputStream(connection.getOutputStream());
out.write(data); DataInputStream in = new DataInputStream(fins);
int bytes = 0;
byte[] bufferOut = new byte[1024]; while ((bytes = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, bytes);
} in.close(); byte[] foot = ("\r\n--" + bound + "--\r\n").getBytes("utf-8"); // 定义最后数据分隔线
out.write(foot);
out.flush();
out.close(); InputStream inn = connection.getInputStream();
ByteArrayOutputStream bs = new ByteArrayOutputStream();
int n = 0;
byte[] datas = new byte[2048]; while ((n = inn.read(datas)) != -1) {
bs.write(datas, 0, n);
} bs.flush();
result = new String(bs.toByteArray(), "utf-8"); return result;
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
connection.disconnect();
} catch (Exception ex) {
}
} return null;
}
}
java通过java.net.URL发送http请求调用接口的更多相关文章
- Java发布webservice应用并发送SOAP请求调用
webservice框架有很多,比如axis.axis2.cxf.xFire等等,做服务端和做客户端都可行,个人感觉使用这些框架的好处是减少了对于接口信息的解析,最主要的是减少了对于传递于网络中XML ...
- JAVA使用apache http组件发送POST请求
在上一篇文章中,使用了JDK中原始的HttpURLConnection向指定URL发送POST请求 可以看到编码量有些大,并且使用了输入输出流 传递的参数还是用“name=XXX”这种硬编的字符串进行 ...
- python接口自动化(八)--发送post请求的接口(详解)
简介 上篇介绍完发送get请求的接口,大家必然联想到发送post请求的接口也不会太难,被聪明的你又猜到了.答案是对的,虽然发送post请求的参考例子很简单,但是实际遇到的情况却是很复杂的,因为所有系统 ...
- 发送post请求的接口
一.简介 所有系统或者软件.网站都是从登录开始,所以首先介绍的第一个post请求是登录. 二.help函数 学习一个新的模块捷径,直接用help()函数查看相关注释和案例内容 for example: ...
- Hbuilder MUI里面使用java.net.URL发送网络请求,操作cookie
1. 引入所需网络请求类: var URL = plus.android.importClass("java.net.URL"); var URLConnection = plus ...
- 【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法(一)
Java原生的API可用于发送HTTP请求 即java.net.URL.java.net.URLConnection,JDK自带的类: 1.通过统一资源定位器(java.net.URL)获取连接器(j ...
- 向指定URL 发送POST请求的方法
java发送psot请求: package com.tea.web.admin; import java.io.BufferedReader; import java.io.IOException; ...
- java编程(2)——servlet和Ajax异步请求的接口编程(有调用数据库的数据)
第一步: 1.为项目配置 Tomcat 为 server: 2.导入 mysql的jar包 到项目目录中: 第二步:编码 1.数据库连接类ConnectMysql.java代码: package co ...
- 对WEB url 发送POST请求
package com.excellence.spark; import java.util.List; import com.excellence.spark.test.test; import c ...
随机推荐
- Linux基础命令---resizefs
resize2fs 调整ext2\ext3\ext4文件系统的大小,它可以放大或者缩小没有挂载的文件系统的大小.如果文件系统已经挂载,它可以扩大文件系统的大小,前提是内核支持在线调整大小. size参 ...
- Django框架----Web框架本质
Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 半成品自定义web框架 impor ...
- htpasswd命令的使用
htpasswd的基本用法 htpasswd是Apache服务器中生成用户认证的一个工具,仅说明htpasswd的用法: htpasswd参数 -c 创建passwdfile.如果passwdfile ...
- leetcode 136 Single Number, 260 Single Number III
leetcode 136. Single Number Given an array of integers, every element appears twice except for one. ...
- 20145104张家明 《Java程序设计》第8周学习总结
20145104张家明 <Java程序设计>第8周学习总结 教材学习内容总结 第15章 -java.util.logging包提供了日志功能相关类与接口,不必额外配置日志组件,就可以在标准 ...
- USACO 1.3 Wormholes - 搜索
Wormholes Farmer John's hobby of conducting high-energy physics experiments on weekends has backfire ...
- Python3基础 list 查看filter()返回的对象
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- 质量管理三个概念:QC、QA和QM,你能分得清吗?
今天这里谈的QC.QA和QM,不是岗位或职位,而是一种概念或质量管理的不同时期所关注的重点. 1.产品 早期的质量管理(工业化雏形期)侧重于对终产品的检测.测试,即QC(品质控制)时代. 这个时期的质 ...
- 如果恨一个程序员,忽悠他去做iOS开发
如果你恨一个程序员,忽悠他去做iOS开发.不管他背景是cobel还是 java,送他一本iOS开发的书.这种书最好是国人写的,容易以偏概全一点,相比洋鬼子的书,更容易学到皮毛.这叫舍不得孩子套不着狼, ...
- json获取元素数量
var keleyijson={"plug1":"myslider","plug2":"zonemenu"} funct ...