一般在*.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请求调用接口的更多相关文章

  1. Java发布webservice应用并发送SOAP请求调用

    webservice框架有很多,比如axis.axis2.cxf.xFire等等,做服务端和做客户端都可行,个人感觉使用这些框架的好处是减少了对于接口信息的解析,最主要的是减少了对于传递于网络中XML ...

  2. JAVA使用apache http组件发送POST请求

    在上一篇文章中,使用了JDK中原始的HttpURLConnection向指定URL发送POST请求 可以看到编码量有些大,并且使用了输入输出流 传递的参数还是用“name=XXX”这种硬编的字符串进行 ...

  3. python接口自动化(八)--发送post请求的接口(详解)

    简介 上篇介绍完发送get请求的接口,大家必然联想到发送post请求的接口也不会太难,被聪明的你又猜到了.答案是对的,虽然发送post请求的参考例子很简单,但是实际遇到的情况却是很复杂的,因为所有系统 ...

  4. 发送post请求的接口

    一.简介 所有系统或者软件.网站都是从登录开始,所以首先介绍的第一个post请求是登录. 二.help函数 学习一个新的模块捷径,直接用help()函数查看相关注释和案例内容 for example: ...

  5. Hbuilder MUI里面使用java.net.URL发送网络请求,操作cookie

    1. 引入所需网络请求类: var URL = plus.android.importClass("java.net.URL"); var URLConnection = plus ...

  6. 【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法(一)

    Java原生的API可用于发送HTTP请求 即java.net.URL.java.net.URLConnection,JDK自带的类: 1.通过统一资源定位器(java.net.URL)获取连接器(j ...

  7. 向指定URL 发送POST请求的方法

    java发送psot请求: package com.tea.web.admin; import java.io.BufferedReader; import java.io.IOException; ...

  8. java编程(2)——servlet和Ajax异步请求的接口编程(有调用数据库的数据)

    第一步: 1.为项目配置 Tomcat 为 server: 2.导入 mysql的jar包 到项目目录中: 第二步:编码 1.数据库连接类ConnectMysql.java代码: package co ...

  9. 对WEB url 发送POST请求

    package com.excellence.spark; import java.util.List; import com.excellence.spark.test.test; import c ...

随机推荐

  1. Linux下的Make命令实例详解

    众所周知在Linux系统下的make 命令是系统管理员和程序员用的最频繁的命令之一.管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题.下面这 篇文章我们将用一 ...

  2. python3.4学习笔记(十) 常用操作符,条件分支和循环实例

    python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...

  3. htpasswd命令的使用

    htpasswd的基本用法 htpasswd是Apache服务器中生成用户认证的一个工具,仅说明htpasswd的用法: htpasswd参数 -c 创建passwdfile.如果passwdfile ...

  4. phpstorm常用快捷键(自备不全)

    CTRL+N 查找类 CTRL+SHIFT+N 全局搜索文件 ,优先文件名匹配的文件 CTRL+SHIFT+ALT+N 查找php类名/变量名 ,js方法名/变量名, css 选择器 CTRL+G 定 ...

  5. 根据wsdl文件,Web工程自动生成webservice客户端调用

    根据wsdl文件,Web工程自动生成webservice客户端调用 1,工具:带有webservice插件的eclips 2,步骤: (1),新建一个Web工程:WSDLTest (2),浏览器访问W ...

  6. poj 2369 Permutations - 数论

    We remind that the permutation of some final set is a one-to-one mapping of the set onto itself. Les ...

  7. RSA加密解密中pkcs1与pkcs8格式私钥互相转换

    net,ios中rsa加解密使用的是pkcs1,而java使用的是pkcs8 如果是按1024取模(通常都是1024),pkcs1格式的私钥长度应该是812.如果是pkcs8的格式的密钥长度为861. ...

  8. SxsTrace

    https://troubleshooter.xyz/wiki/fix-the-application-has-failed-to-start-because-the-side-by-side-con ...

  9. 【lrzsz 】Linux安装上传下载功能

    1.在线安装服务 # yum -y install lrzsz 2.上传 rz 3.下载 sz

  10. Struts2 文件下载(中文处理方法以及控制下载文件名称和扩展名)

    Struts2的框架提供了现成的文件下载方式,大大简化了开发下载功能的便利性.网上的例子有很多,我把一些大家普遍比较关注的点,集中一下,给出一个整体方案. 一般我们照着书本或者网上的列子写出了一个De ...