java发起http请求获取返回的Json对象方法

作者:jeanFlower 时间:2022-06-20 04:00:00 

话不多说,先看代码!


/**
* Created by david on 2017-7-5.
*/
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpRequestUtil {
/**
 * 发起http请求并获取结果
 * @param requestUrl 请求地址
 */
public static JsonObject getXpath(String requestUrl){
 String res="";
 JsonObject object = null;
 StringBuffer buffer = new StringBuffer();
 try{
  URL url = new URL(requestUrl);
  HttpURLConnection urlCon= (HttpURLConnection)url.openConnection();
  if(200==urlCon.getResponseCode()){
   InputStream is = urlCon.getInputStream();
   InputStreamReader isr = new InputStreamReader(is,"utf-8");
   BufferedReader br = new BufferedReader(isr);
   String str = null;
   while((str = br.readLine())!=null){
    buffer.append(str);
   }
   br.close();
   isr.close();
   is.close();
   res = buffer.toString();
   JsonParser parse =new JsonParser();
   object = (JsonObject) parse.parse(res);
  }
 }catch(IOException e){
  e.printStackTrace();
 }
 return object;
}
public static JsonObject postDownloadJson(String path,String post){
 URL url = null;
 try {
  url = new URL(path);
  HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
  httpURLConnection.setRequestMethod("POST");// 提交模式
  // conn.setConnectTimeout(10000);//连接超时 单位毫秒
  // conn.setReadTimeout(2000);//读取超时 单位毫秒
  // 发送POST请求必须设置如下两行
  httpURLConnection.setDoOutput(true);
  httpURLConnection.setDoInput(true);
  // 获取URLConnection对象对应的输出流
  PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream());
  // 发送请求参数
  printWriter.write(post);//post的参数 xx=xx&yy=yy
  // flush输出流的缓冲
  printWriter.flush();
  //开始获取数据
  BufferedInputStream bis = new   BufferedInputStream(httpURLConnection.getInputStream());
  ByteArrayOutputStream bos = new ByteArrayOutputStream();
  int len;
  byte[] arr = new byte[1024];
  while((len=bis.read(arr))!= -1){
   bos.write(arr,0,len);
   bos.flush();
  }
  bos.close();
  JsonParser parse = new JsonParser();
  return (JsonObject)parse.parse(bos.toString("utf-8"));
 } catch (Exception e) {
  e.printStackTrace();
 }
 return null;
}
//测试
public static void main(String args [] ) {
 JsonObject res = null;
//  res = getXpath("http://ip.taobao.com/service/getIpInfo.php?ip=63.223.108.42");
 res = postDownloadJson("http://ip.taobao.com/service/getIpInfo.php?ip=63.223.108.42","123");
 System.out.println(res);
 System.out.println(res.get("code"));
 System.out.println(res.get("data"));
}
}

看第一个方法,发送get请求获取后台数据,其中,将返回回来的字符串解析成json对象用到了google的Gson.jar包,用到了其中JsonParser的parse方法。

第二个方法,发送post数据到后台并获取后台数据。

来源:https://blog.csdn.net/jeanFlower/article/details/74494136

标签:java,http,请求,Json
0
投稿

猜你喜欢

  • 详解java整合solr5.0之solrj的使用

    2023-07-23 03:12:06
  • C# cmd中修改显示(显示进度变化效果)的方法

    2023-11-02 13:55:34
  • Android编程基于重力传感器实现横竖屏放向切换功能

    2022-11-30 00:38:54
  • Java获取当前时间年月日的方法

    2023-02-19 01:26:54
  • 解决Tomcat启动报异常java.lang.ClassNotFoundException问题

    2023-07-27 03:33:01
  • java采用中文方式显示时间的方法

    2021-07-24 03:04:34
  • C#双向链表LinkedList排序实现方法

    2021-08-19 14:06:16
  • Android实现计时与倒计时的常用方法小结

    2023-10-28 07:18:02
  • SpringBoot搭建多数据源的实现方法

    2022-07-02 18:57:04
  • Android GPS获取当前经纬度坐标

    2021-10-31 12:09:40
  • Spring Cloud Gateway整合sentinel 实现流控熔断的问题

    2022-01-18 23:10:05
  • Winform下实现图片切换特效的方法

    2023-04-20 21:26:28
  • 如何用java程序(JSch)运行远程linux主机上的shell脚本

    2023-11-24 12:35:58
  • 基于SSM实现学生管理系统

    2023-11-24 18:17:39
  • java数字转汉字工具类详解

    2023-04-28 02:00:26
  • 详解Java8中的lambda表达式、::符号和Optional类

    2022-02-03 03:04:56
  • android实现下拉菜单三级联动

    2022-10-13 15:46:53
  • Jenkins自动构建部署项目到远程服务器上的方法步骤

    2023-11-25 00:21:40
  • Flutter 底部弹窗如何实现多项选择

    2023-06-24 17:08:17
  • SpringBoot自定义starter启动器的实现思路

    2023-10-09 00:55:15
  • asp之家 软件编程 m.aspxhome.com