当前位置:

首页 > 编程开发 > java如何发起http请求调用post与get接口

java如何发起http请求调用post与get接口

Postman macOS版
Postman macOS版

Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

立即下载
¥724 ¥965
Mac 2026-10-13
数据库 编程开发 API 服务器管理 Postman

一、java调用post接口1、使用URLConnection或者HttpURLConnectionjava自带的,无需下载其他jar包URLConnection方式调用,如果接口响应码被服务端修改则无法接收到返回报文,只能当响应码正确时才能接收到返回publicstaticStringsendPost(Stringurl,Stringparam){OutputStreamWriterout=null;BufferedReaderin=null;StringBuilderresult=newStringB

本文目录

      一、java调用post接口

      1、使用URLConnection或者HttpURLConnection

      java自带的,无需下载其他jar包

      URLConnection方式调用,如果接口响应码被服务端修改则无法接收到返回报文,只能当响应码正确时才能接收到返回

      public static String sendPost(String url, String param) {
              OutputStreamWriter out = null;
              BufferedReader in = null;
              StringBuilder result = new StringBuilder("");
              try {
                  URL realUrl = new URL(url);
                  // 打开和URL之间的连接
                  URLConnection conn = realUrl.openConnection();
                  // 设置通用的请求属性
                  conn.setRequestProperty("Content-Type","application/json;charset=UTF-8");
                  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 OutputStreamWriter(conn.getOutputStream(), "UTF-8");
                  // 发送请求参数
                  out.write(param);
                  // flush输出流的缓冲
                  out.flush();
                  // 定义BufferedReader输入流来读取URL的响应
                  in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
                  String line;
                  while ((line = in.readLine()) != null) {
                      result.append(line);
                  }
              } catch (Exception e) {
                  System.out.println("发送 POST 请求出现异常!"+e);
                  e.printStackTrace();
              }
              //使用finally块来关闭输出流、输入流
              finally{
              	if(out!=null){ try { out.close(); }catch(Exception ex){} }
              	if(in!=null){ try { in.close(); }catch(Exception ex){} }
              }
              return result.toString();
          }

      HttpURLConnection方式调用

      //ms超时毫秒,url地址,json入参
      public static String httpJson(int ms,String url,String json) throws Exception{
      		String err = "00", line = null;
      		StringBuilder sb = new StringBuilder();
      		HttpURLConnection conn = null;
      		BufferedWriter out = null;
      		BufferedReader in = null;
      		try{
      			conn = (HttpURLConnection) (new URL(url.replaceAll("/","/"))).openConnection();
      			conn.setRequestMethod("POST");
      			conn.setDoOutput(true);
      			conn.setDoInput(true);
      			conn.setUseCaches(false);
      			conn.setConnectTimeout(ms);
      			conn.setReadTimeout(ms);
      			conn.setRequestProperty("Content-Type","application/json;charset=utf-8");
      			conn.connect();
      			out = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream(),"utf-8"));
      			out.write(new String(json.getBytes(), "utf-8"));
      			out.flush();//发送参数
      			int code = conn.getResponseCode();
      			if (conn.getResponseCode()==200){
      				in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
      				while ((line=in.readLine())!=null)
      					sb.append(line);
      			}//接收返回值
      			
      		}catch(Exception ex){
      			err=ex.getMessage();
      		}
      		try{ if (out!=null) out.close(); }catch(Exception ex){}; 
      		try{ if (in!=null) in.close(); }catch(Exception ex){};
      		try{ if (conn!=null) conn.disconnect();}catch(Exception ex){}
      		if (!err.equals("00")) throw new Exception(err);
      		return sb.toString();
      	}

      2、使用CloseableHttpClient

      使用的jar包

      
          com.alibaba.csb.sdk
          http-client
          1.1.5.1
      
      public static String httpPostJson(String url,String json) throws Exception{
      		String data=""; 
      		CloseableHttpClient httpClient = null;
      		CloseableHttpResponse response = null;
      		try {
      			httpClient = HttpClients.createDefault();
      			HttpPost httppost = new HttpPost(url);
      			httppost.setHeader("Content-Type", "application/json;charset=UTF-8");
      			StringEntity se = new StringEntity(json,Charset.forName("UTF-8"));
      	        se.setContentType("text/json");
      	        se.setContentEncoding("UTF-8");
      	        httppost.setEntity(se);
      	        response = httpClient.execute(httppost);
      	        int code = response.getStatusLine().getStatusCode();
      	        System.out.println("接口响应码:"+code);
      	        data = EntityUtils.toString(response.getEntity(), "utf-8");
      	        EntityUtils.consume(response.getEntity());
      		} catch (Exception e) {
      			e.printStackTrace();
      		} finally {
      			if(response!=null){ try{response.close();}catch (IOException e){} }
      			if(httpClient!=null){ try{httpClient.close();}catch(IOException e){} }
      		}
      		return data;
      	}

      3、使用HttpCaller

      使用的jar包同第2个中的jar包。

      public static String sendPost(){
      		String result = "";
      		HttpParameters.Builder builder = HttpParameters.newBuilder();
      		builder.requestURL("URL") // 设置请求的URL
              		.api("api") // 设置服务名
              		.version("version") // 设置版本号
              		.method("post") // 设置调用方式, get/post
              		.accessKey("ak").secretKey("sk"); // 设置accessKey 和 设置secretKey
      		// 设置请求参数(json格式)
              Map param = new HashMap();
              param.put("key1","value1");
              param.put("key2","value2");
              //加密,没有加密则不需要encryptParam,直接用param
              Map encryptParam = new HashMap();
              encryptParam.put("key3", getData(JSON.toJSONString(param)));
              ContentBody cb = new ContentBody(JSON.toJSONString(encryptParam));
              builder.contentBody(cb);
              
              try {
              	result = HttpCaller.invoke(builder.build());
      		} catch (Exception e) {
      			e.printStackTrace();
      		}
      		
              return result;
      	}
      	
      	//自己的加密方式
      	public static String getData(String data1){
      		return "加密后的密文";
      	}

      二、java调用get接口

      使用java自带的URLConnection

      //将map型转为请求参数型
      public static String getUrlData(Map data) throws Exception{
      	StringBuffer sb = new StringBuffer();
      	try {
      		Set> entries = data.entrySet();
      		Iterator> iterators = entries.iterator();
      		while(iterators.hasNext()){
      			Map.Entry next = iterators.next();
      			sb.append(next.getKey().toString().trim()).append("=").append(URLEncoder.encode(next.getValue() + "", "UTF-8").trim()).append("&");
      		}
      		sb.deleteCharAt(sb.length() - 1);
      	} catch (Exception e) {
      		sb.append(e.toString());
      	}
      	return sb.toString();
      }
      
      //strUrl截止到?,例:http://127.0.0.1:8080/api/method?
      public static String httpGet(String strUrl){
      	Map params = new HashMap();
      	params.put("key1", "value1");
      	params.put("key2", "value2");
      	String url=strUrl + getUrlData(params);
      	
        	StringBuilder result = new StringBuilder();
          BufferedReader in = null;
          try {
              URL realUrl = new URL(url);
              // 打开和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();
              // 获取所有响应头字段
              // 定义 BufferedReader输入流来读取URL的响应
              in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
              String line;
              while ((line = in.readLine()) != null) {
                  result.append(line);
              }
          } catch (Exception e) {
              System.out.println("发送GET请求出现异常!" + e);
              e.printStackTrace();
          }
          finally {
          	if (in != null){ try { in.close(); }catch(Exception e2){} }
          }
          return result.toString();
      }
      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
      作者最新文章
      编程开发 Java
      相关文章 更多
      Java单元测试入门:使用JUnit 5编写第一个测试用例
      Java单元测试入门:使用JUnit 5编写第一个测试用例

      面向初学者的JUnit 5实用入门指南。从测试概念、Maven依赖配置,到手把手编写首个单元测试用例及断言验证,助你掌握Java单元测试的核心流程。

      Java变量未初始化报错解析:局部变量与成员变量默认值差异
      Java变量未初始化报错解析:局部变量与成员变量默认值差异

      深入解析Java中局部变量未初始化编译报错与成员变量自动赋予默认值的机制差异,涵盖JVM内存分配、编译期确定性赋值检查与实际排查修复方案。

      Java获取当前时间并格式化输出:DateTimeFormatter与SimpleDateFormat
      Java获取当前时间并格式化输出:DateTimeFormatter与SimpleDateFormat

      详细讲解在Java中获取当前系统时间并进行格式化输出的两种核心方案:基于Java 8全新日期时间API的DateTimeFormatter与传统遗留的SimpleDateFormat,包含完整代码示例、线程安全机制对比及生产选型建议。

      Java中final与static final常量的定义及初始化规则
      Java中final与static final常量的定义及初始化规则

      深入解析Java中final变量与static final常量的定义、内存语义、初始化时机及合法赋值路径,涵盖编译期常量优化与实战避坑指南。

      Java抽象方法与接口方法的区别及选型建议
      Java抽象方法与接口方法的区别及选型建议

      深入对比Java中抽象类抽象方法与接口方法的语法演进、设计意图及运行期差异,并提供清晰的架构选型决策流程与实战范例。

      Java实现HTTP请求与JSON解析的完整代码示例
      Java实现HTTP请求与JSON解析的完整代码示例

      本文提供Java标准库HttpClient发起HTTP GET/POST请求并结合Jackson进行JSON数据反序列化与序列化的完整代码示例与工程实践指南。

      Java递归出现StackOverflowError的原因分析及栈空间优化方案
      Java递归出现StackOverflowError的原因分析及栈空间优化方案

      详细分析Java递归调用出现StackOverflowError的原因,结合代码说明线程栈、栈帧和递归深度之间的关系,并介绍终止条件排查、迭代改写、减少栈帧开销以及通过-Xss调整JVM栈空间的方法。

      Java空指针异常(NPE)的代码排查与修复实例
      Java空指针异常(NPE)的代码排查与修复实例

      针对Java中常见的NullPointerException(NPE),本文从堆栈日志定位、典型代码触发场景、具体修复代码对比到防御体系进行系统讲解,提供实用且易上手的排查与修复方案。

      selenium上传文件教程本地文件路径设置方法
      selenium上传文件教程本地文件路径设置方法

      深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

      大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
      大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

      针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

      查看更多
      精品专题 更多
      装机必备
      装机必备

      正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

      Windows
      Windows

      正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

      PDF教程
      PDF教程

      正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

      Mac软件 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      Aperty macOS版
      Aperty macOS版
      macOS

      Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

      WINDOWS 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      PixTV 网页版
      PixTV 网页版
      Windows

      PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

      即将离开本站
      您即将前往第三方网站,请确认是否继续?