java调用http接口(get请求和post请求)

这篇具有很好参考价值的文章主要介绍了java调用http接口(get请求和post请求)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.http接口的格式如下:

图片选择失败,我只能把数据贴出来,如果有不懂的可以问我哈。
http://localhost:8881/department/getDepartmentList接口数据如下:(请求方式是GET)

{
	"code":0,
	"data":[
		{"id":1,"departmentName":"软件研发部","description":"完成对项目的功能,性能,接口,界面等方面的编码工作"},
		{"id":2,"departmentName":"软件技术部","description":"编写测试用例,测试软件功能,负责项目的质量审查工作"},
		{"id":3,"departmentName":"网络管理部","description":"全面掌握网络运行状况,及时报告网络异常情况及其产生原因并做好记录"},
		{"id":4,"departmentName":"市场营销部","description":"配合软件技术部收集整理客户需求工作中有关所有事项"},
		{"id":5,"departmentName":"行政部门","description":"主要就是负责行政的工作"},
		{"id":6,"departmentName":"财务部门","description":"主要就是管钱,记账"},
		{"id":7,"departmentName":"人事部门","description":"负责考情打卡"},
		{"id":8,"departmentName":"建库部门","description":"主要负责建库,审核工作"},
		{"id":9,"departmentName":"产品部门","description":"负责公司产品推广"}
	]
}

http://localhost:8881/department/getDataById?id=3接口数据如下:(请求方式是POST)

{
    "code": 0,
    "data": {
        "id": 3,
        "departmentName": "网络管理部",
        "description": "全面掌握网络运行状况,及时报告网络异常情况及其产生原因并做好记录"
    }
}

2.需要引入的包有:

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.42</version>
</dependency>

3.实现方法如下:

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;


public static void main(String[] args) {
	 //处理json字符串
	 //testJson();
	 
	 //动态处理json字符串
	 //commonHttpMethod("http://localhost:8881/department/getDepartmentList", "", "GET");
	 //commonHttpMethod("http://localhost:8881/department/getDataById", "id=3", "POST");
}



//测试
public static void testJson() {
	//1、比如前端接收的是str的json字符串,我们是不能直接获取到名字所对应的值的,所以必须要对这个字符串进行解析。
    String str = "{\"code\":\"0\"," +
               "\"message\":\"success\"," +
               "\"detail\":[\n" +
                "    {\"userName\":\"userName\",\n" +
                "    \"password\":123456,\n" +
                "    \"phoneNum\":\"13877774534\",\n" +
                "    \"isAdmin\":1,\n" +
                "    \"alarms\":[24],\n" +
                "    \"status\":[1,5,7],\n" +
                "    \"property\":{}\n" +
                "    }" +
               " ]" +
            " }";
    
    //2、先转换成JSONObject类型
  	JSONObject jsonObj = JSON.parseObject(str);
  	
    //通过JSONObject中的getString("key")方法,得到对应的值  {"code":"0","message":"success"}这种类型
	System.out.println("code:" + jsonObj.getString("code")+" detail:" + jsonObj.getString("detail"));
	
	//3、字符串中含有数组的,比如像detail中的数据
	JSONArray jsonInfo = JSONObject.parseArray(jsonObj.getString("detail"));
	for (int i = 0; i < jsonInfo.size(); i++) {
		JSONObject jsonObject = jsonInfo.getJSONObject(i);
		//4、遍历数据,存入数据库【存入数据库直接调用增加的方法即可】
		String userName = jsonObject.getString("userName");
		String password = jsonObject.getString("password");
		String phoneNum = jsonObject.getString("phoneNum");
		System.out.println("userName:" + userName + " password:" + password + "  phoneNum:" + phoneNum);
	}
}



public static void commonHttpMethod(String path, String param, String requestMethod) {
	 if(requestMethod == "POST") { // POST请求
		 String postData = interfaceUtil(path, param, requestMethod);
		 JSONObject jsonObj = JSON.parseObject(postData);
         //System.out.println("code:"+ jsonObj.getString("code") + " data:"+jsonObj.getString("data"));
		 
      	
      	 //转成对象 【data为1条数据】
         JSONObject result = JSONObject.parseObject(JSONObject.toJSONString(jsonObj.get("data")));
      	 System.out.println("result:" + result);
     	 Integer id = result.getInteger("id");
     	 String departmentName = result.getString("departmentName");
     	 String description = result.getString("description");
     	 System.out.println("id:" + id + " departmentName:" + departmentName + "  description:" + description);
     	 
	 }else if(requestMethod == "GET") { // GET请求 
		 String getData = interfaceUtil(path, param, requestMethod);
		 JSONObject jsonObj = JSON.parseObject(getData);
         //System.out.println("code:"+ jsonObj.getString("code") + " data:"+jsonObj.getString("data"));
		 
		 //转成数组 【data为多条数据】
         JSONArray json = JSONObject.parseArray(jsonObj.getString("data"));
         System.out.println("json:" + json);
    	 for (int i = 0; i < json.size(); i++) {
        	 JSONObject jsonObject = json.getJSONObject(i);
        	 Integer id = jsonObject.getInteger("id");
        	 String departmentName = jsonObject.getString("departmentName");
        	 String description = jsonObject.getString("description");
        	 System.out.println("size:"+json.size() +" id:" + id + " departmentName:" + departmentName + "  description:" + description);
    	 }
	 }
 }
	 
	 
	 
 /**
 * @调用对方接口方法  向指定 URL发送请求,请求参数为json形式数据
    * @param path 对方或第三方提供的路径
    * @param param 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析
    * @param requestMethod 请求方式 GET POST PUT等
 * @return 
    */
   public static String interfaceUtil(String path, String param, String requestMethod) {
   	   String objectData = "";
       try {
           URL url = new URL(path);
           
           //打开和url之间的连接
           HttpURLConnection connection = (HttpURLConnection) url.openConnection();
           PrintWriter out = null;
           
           //设置URLConnection的参数和普通的请求属性
           connection.setRequestProperty("accept", "*/*");
           connection.setRequestProperty("connection", "Keep-Alive");
           connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); 
           
           if(requestMethod == "POST") {//发送POST方式的请求,需要获取URLConnection实例对应的输出流来发送请求参数
	           	//设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入,发送post请求必须设置这两个
	            //最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,
	            //post与get的 不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。
	           	connection.setDoOutput(true);
	           	connection.setDoInput(true);
	            
	           	connection.setRequestMethod("POST");//GET和POST必须全大写
	            out = new PrintWriter(connection.getOutputStream());//获取URLConnection对象对应的输出流 
	            out.print(param);//发送请求参数即数据
	            out.flush();//缓冲数据
           }else if(requestMethod == "GET") {//发送GET方式请求,使用connet方法建立和远程资源之间的实际连接即可
	           	connection.setRequestMethod("GET");//GET和POST必须全大写
	           	connection.connect(); 
           }else {
           		System.out.println("请重新设置请求方式!");
           }
           
           //获取URLConnection对象对应的输入流
           InputStream is = connection.getInputStream();
           //构造一个字符流缓存
           BufferedReader br = new BufferedReader(new InputStreamReader(is));
           String str = "";
           while ((str = br.readLine()) != null) {
           	   str = new String(str.getBytes(), "UTF-8");//解决中文乱码问题
               System.out.println("str:" + str);
               objectData = getStringData(str);
           }
           //关闭流
           is.close();
           //断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。
           //固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。
           connection.disconnect();
           System.out.println(requestMethod+"接口调用完毕!");
       	
       } catch (Exception e) {
           e.printStackTrace();
       }
       return objectData;
   }
   
  

   public static String getStringData(String value) {
   		return value;
   }

如果文章有用,麻烦点个赞,给个评论,谢谢。文章来源地址https://www.toymoban.com/news/detail-538845.html

到了这里,关于java调用http接口(get请求和post请求)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 再谈http请求调用(Post与Get),项目研发的核心一环

    支持.Net Core(2.0及以上)与.Net Framework(4.0及以上) 【目录】 前言 Post请求 Get请求 与其它工具的比较   1【前言】 http请求调用是开发中经常会用到的功能。 在内,调用自有项目的Web Api等形式接口时会用到;在外,调用一些第三方功能接口时,也会用到,因为,这些第三方功能往

    2024年02月08日
    浏览(34)
  • 【接口】HTTP(3) |GET和POST两种基本请求方法有什么区别

    在我面试时,在我招人面试别人时,10次能遇到7次这个问题,我听过我也说回答过: Get: 一般对于从服务器取数据的请求可以设置为get方式 Get方式在传递参数的时候,一般都会把参数直接拼接在url上 Get请求方法可以传递的参数数据量是有限的(因为一般参数是拼接在url上,

    2024年04月12日
    浏览(34)
  • java中使用hutool调用get请求,post请求

    一、hutool工具包实现 1、get请求 2、post请求 二、java net实现 1、java中http协议调用get请求 2、java中https协议调用get请求

    2024年02月11日
    浏览(31)
  • python3写一个http接口服务(get, post),给别人调用6

    近年来异步web服务器比较火热,例如falcon/bottle/sanic/aiohttp,今天也来玩玩sanic。 Sanic是一个支持Python 3.7+的web服务器和web框架,速度很快。它允许使用Python 3.5中添加的async/await语法,无阻塞且快。 Sanic也符合ASGI,目标是提供一种简单的方法来建立和运行一个高性能的HTTP服务器

    2024年02月15日
    浏览(33)
  • Java发送HTTP GET/POST请求

    在这篇文章中,将向你展示四种发送Http的GET/POST的例子,如下: 在Java11的java.net.http.*包中,有一个HttpClient类可以完成HTTP请求。 Java11HttpClientExample.java 本例使用HttpURLConnection(http)和HttpsURLConnection(https) HttpURLConnectionExample.java 使用Apache HttpClient完成HTTP请求的发送需要添加Maven依赖

    2024年02月13日
    浏览(26)
  • Java http GET POST 请求传参

    HTTP POST请求传参方式 方式一: 方式二 HTTP GET请求传参方式

    2024年02月15日
    浏览(32)
  • HTTP POST接口带参数的HttpClient请求方法和调用

    接口自动化测试,今天遇到POST接口带参数,参数在url上,发现原来的工具类中没有该方法,重新调试加上。  doPost方法如下: 参考: [Java 接口自动化框架]httpclient4.5.3(CloseableHttpClient) https的工具类HttpsClientUtils

    2024年02月06日
    浏览(35)
  • java http get post 和 发送json数据请求

    浏览器请求效果       main调用  

    2024年02月16日
    浏览(33)
  • Java 中使用 OkHttpClent 请求接口 get方式 post方式

    学习记录,不喜勿喷 一般在Java平台上,我们会使用Apache HttpClient作为Http客户端,用于发送 HTTP 请求,并对响应进行处理。比如可以使用http客户端与第三方服务(如SSO服务)进行集成,当然还可以爬取网上的数据等。OKHttp与HttpClient类似,也是一个Http客户端,提供了对 HTTP/2 和

    2024年02月12日
    浏览(43)
  • 使用QT实现http里面的get和post

    #1024程序员节|参与投稿,赢限定勋章和专属大奖# #假如你有一台服务器,你最想做哪些事?# #你被什么样的BUG困扰过一周以上?# 在http里面下面这些方法和服务器的响应代码一起用于HTTP协议中的请求和响应交互。请注意,这些函数不是由编程语言实现的,而是由HTTP协议规定

    2024年02月07日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包