JAVA发送http get/post请求,调用http接口、方法详解

作者:霄永梓 时间:2021-11-02 16:41:19 

三个例子 —JAVA发送http get/post请求,调用http接口、方法

例1:使用 HttpClient (commons-httpclient-3.0.jar
jar下载地址:http://xiazai.jb51.net/201904/yuanma/commons-httpclient-3.0.rar


import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;

public class HttpTool {

/**
 * 发送post请求
 *
 * @author Michael -----CSDN: http://blog.csdn.net/capmiachael
 * @param params
 *   参数
 * @param requestUrl
 *   请求地址
 * @param authorization
 *   授权书
 * @return 返回结果
 * @throws IOException
 */
public static String sendPost(String params, String requestUrl,
  String authorization) throws IOException {

byte[] requestBytes = params.getBytes("utf-8"); // 将参数转为二进制流
 HttpClient httpClient = new HttpClient();// 客户端实例化
 PostMethod postMethod = new PostMethod(requestUrl);
 //设置请求头Authorization
 postMethod.setRequestHeader("Authorization", "Basic " + authorization);
 // 设置请求头 Content-Type
 postMethod.setRequestHeader("Content-Type", "application/json");
 InputStream inputStream = new ByteArrayInputStream(requestBytes, 0,
   requestBytes.length);
 RequestEntity requestEntity = new InputStreamRequestEntity(inputStream,
   requestBytes.length, "application/json; charset=utf-8"); // 请求体
 postMethod.setRequestEntity(requestEntity);
 httpClient.executeMethod(postMethod);// 执行请求
 InputStream soapResponseStream = postMethod.getResponseBodyAsStream();// 获取返回的流
 byte[] datas = null;
 try {
  datas = readInputStream(soapResponseStream);// 从输入流中读取数据
 } catch (Exception e) {
  e.printStackTrace();
 }
 String result = new String(datas, "UTF-8");// 将二进制流转为String
 // 打印返回结果
 // System.out.println(result);

return result;

}

/**
 * 从输入流中读取数据
 *
 * @param inStream
 * @return
 * @throws Exception
 */
public static byte[] readInputStream(InputStream inStream) throws Exception {
 ByteArrayOutputStream outStream = new ByteArrayOutputStream();
 byte[] buffer = new byte[1024];
 int len = 0;
 while ((len = inStream.read(buffer)) != -1) {
  outStream.write(buffer, 0, len);
 }
 byte[] data = outStream.toByteArray();
 outStream.close();
 inStream.close();
 return data;
}
}

例2:


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

/**
* Http请求工具类
* @author snowfigure
* @since 2014-8-24 13:30:56
* @version v1.0.1
*/
public class HttpRequestUtil {
static boolean proxySet = false;
static String proxyHost = "127.0.0.1";
static int proxyPort = 8087;
/**
 * 编码
 * @param source
 * @return
 */
public static String urlEncode(String source,String encode) {
 String result = source;
 try {
  result = java.net.URLEncoder.encode(source,encode);
 } catch (UnsupportedEncodingException e) {
  e.printStackTrace();
  return "0";
 }
 return result;
}
public static String urlEncodeGBK(String source) {
 String result = source;
 try {
  result = java.net.URLEncoder.encode(source,"GBK");
 } catch (UnsupportedEncodingException e) {
  e.printStackTrace();
  return "0";
 }
 return result;
}
/**
 * 发起http请求获取返回结果
 * @param req_url 请求地址
 * @return
 */
public static String httpRequest(String req_url) {
 StringBuffer buffer = new StringBuffer();
 try {
  URL url = new URL(req_url);
  HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();

httpUrlConn.setDoOutput(false);
  httpUrlConn.setDoInput(true);
  httpUrlConn.setUseCaches(false);

httpUrlConn.setRequestMethod("GET");
  httpUrlConn.connect();

// 将返回的输入流转换成字符串
  InputStream inputStream = httpUrlConn.getInputStream();
  InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
  BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String str = null;
  while ((str = bufferedReader.readLine()) != null) {
   buffer.append(str);
  }
  bufferedReader.close();
  inputStreamReader.close();
  // 释放资源
  inputStream.close();
  inputStream = null;
  httpUrlConn.disconnect();

} catch (Exception e) {
  System.out.println(e.getStackTrace());
 }
 return buffer.toString();
}

/**
 * 发送http请求取得返回的输入流
 * @param requestUrl 请求地址
 * @return InputStream
 */
public static InputStream httpRequestIO(String requestUrl) {
 InputStream inputStream = null;
 try {
  URL url = new URL(requestUrl);
  HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
  httpUrlConn.setDoInput(true);
  httpUrlConn.setRequestMethod("GET");
  httpUrlConn.connect();
  // 获得返回的输入流
  inputStream = httpUrlConn.getInputStream();
 } catch (Exception e) {
  e.printStackTrace();
 }
 return inputStream;
}

/**
 * 向指定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;
  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;
  }
 } 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 的形式。
 * @param isproxy
 *    是否使用代理模式
 * @return 所代表远程资源的响应结果
 */
public static String sendPost(String url, String param,boolean isproxy) {
 OutputStreamWriter out = null;
 BufferedReader in = null;
 String result = "";
 try {
  URL realUrl = new URL(url);
  HttpURLConnection conn = null;
  if(isproxy){//使用代理模式
   @SuppressWarnings("static-access")
   Proxy proxy = new Proxy(Proxy.Type.DIRECT.HTTP, new InetSocketAddress(proxyHost, proxyPort));
   conn = (HttpURLConnection) realUrl.openConnection(proxy);
  }else{
   conn = (HttpURLConnection) realUrl.openConnection();
  }
  // 打开和URL之间的连接

// 发送POST请求必须设置如下两行
  conn.setDoOutput(true);
  conn.setDoInput(true);
  conn.setRequestMethod("POST"); // POST方法

// 设置通用的请求属性

conn.setRequestProperty("accept", "*/*");
  conn.setRequestProperty("connection", "Keep-Alive");
  conn.setRequestProperty("user-agent",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

conn.connect();

// 获取URLConnection对象对应的输出流
  out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
  // 发送请求参数
  out.write(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;
}

public static void main(String[] args) {
 //demo:代理访问
 String url = "http://api.adf.ly/api.php";
 String para = "key=youkeyid&youuid=uid&advert_type=int&domain=adf.ly&url=http://somewebsite.com";

String sr=HttpRequestUtil.sendPost(url,para,true);
 System.out.println(sr);
}

}

例3


/**
 * 发送Http post请求
 *
 * @param xmlInfo
 *   json转化成的字符串
 * @param URL
 *   请求url
 * @return 返回信息
 */
public static String doHttpPost(String xmlInfo, String URL) {
 System.out.println("发起的数据:" + xmlInfo);
 byte[] xmlData = xmlInfo.getBytes();
 InputStream instr = null;
 java.io.ByteArrayOutputStream out = null;
 try {
  URL url = new URL(URL);
  URLConnection urlCon = url.openConnection();
  urlCon.setDoOutput(true);
  urlCon.setDoInput(true);
  urlCon.setUseCaches(false);
  urlCon.setRequestProperty("content-Type", "application/json");
  urlCon.setRequestProperty("charset", "utf-8");
  urlCon.setRequestProperty("Content-length",
    String.valueOf(xmlData.length));
  System.out.println(String.valueOf(xmlData.length));
  DataOutputStream printout = new DataOutputStream(
    urlCon.getOutputStream());
  printout.write(xmlData);
  printout.flush();
  printout.close();
  instr = urlCon.getInputStream();
  byte[] bis = IOUtils.toByteArray(instr);
  String ResponseString = new String(bis, "UTF-8");
  if ((ResponseString == null) || ("".equals(ResponseString.trim()))) {
   System.out.println("返回空");
  }
  System.out.println("返回数据为:" + ResponseString);
  return ResponseString;

} catch (Exception e) {
  e.printStackTrace();
  return "0";
 } finally {
  try {
   out.close();
   instr.close();

} catch (Exception ex) {
   return "0";
  }
 }
}

以上所述是小编给大家介绍的Java发送http get/post请求调用接口/方法详解整合网站的支持!

来源:https://blog.csdn.net/CapMiachael/article/details/51833531

标签:Java,get,post,接口,方法
0
投稿

猜你喜欢

  • C#实现将汉字转化为2位大写的16进制Unicode的方法

    2022-03-11 21:45:07
  • 深入HRESULT与Windows Error Codes的区别详解

    2023-10-16 15:19:42
  • C++类中的六大默认成员函数详解

    2022-09-18 01:33:01
  • 实战android打包和签名

    2023-11-18 10:23:50
  • java图片缩放实现图片填充整个屏幕

    2021-06-09 18:30:07
  • Javassist如何操作Java 字节码

    2021-08-09 08:21:28
  • Java 中实现随机无重复数字的方法

    2022-07-06 15:57:37
  • Java Spring AOP源码解析之事务实现原理

    2023-09-10 02:39:46
  • maven install报错中程序包xxx不存在的问题解决

    2023-03-05 03:06:51
  • Android自定义渐变式炫酷ListView下拉刷新动画

    2021-12-26 17:31:09
  • java提取json中某个数组的所有值方法

    2022-04-25 16:02:04
  • java并发高的情况下用ThreadLocalRandom来生成随机数

    2022-10-30 12:42:03
  • 使用mybatis插件PageHelper实现分页效果

    2023-03-29 15:12:03
  • C# CancellationToken和CancellationTokenSource的用法详解

    2023-05-26 19:39:41
  • java中struts2实现文件上传下载功能实例解析

    2022-03-31 06:47:38
  • Java拷贝数组方法Arrays.copyOf()是地址传递的证明实例

    2023-11-08 11:51:29
  • Android贝塞尔曲线初步学习第二课 仿QQ未读消息气泡拖拽黏连效果

    2023-08-18 10:18:20
  • Java八种基本变量作为类的成员变量的默认值操作

    2022-06-25 04:55:58
  • 详解Spring Boot微服务如何集成fescar解决分布式事务问题

    2022-01-21 18:43:51
  • Spring整合CXF webservice restful实例详解

    2023-03-20 09:58:21
  • asp之家 软件编程 m.aspxhome.com