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

话不多说,先看代码!

/**
 * 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数据到后台并获取后台数据。

以上这篇java发起http请求获取返回的Json对象方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java获取http和https协议返回的json数据

    现在很多公司都是将数据返回一个json,而且很多第三方接口都是返回json数据,而且还需要使用到http协议,http协议是属于为加密的协议,而https协议需要SSL证书,https是将用户返回的信息加密处理,然而我们要获取这些数据,就需要引入SSL证书.现在我提供两个方法,帮助各位如何获取http和https返回的数据. 获取http协议的数据的方法,如下: public static JSONObject httpRequest(String requestUrl, String requ

  • Java Http请求传json数据乱码问题的解决

    业务场景:调easyui的dialog打开一个弹窗,传参是用json封装的,而且有中文,然后在极速模式是正常的,在ie11测试发现中文出现乱码了 var params = JSON.stringify(writParamList); top.dialog({ id: 'noticeList', title:'列表', width:900, height:500, url:'${root}/notice/multiNoticeList.do?params='+params, onclose:fun

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

    话不多说,先看代码! /** * 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 ja

  • java发送url请求获取返回值的二种方法

    下面提供二种方法会使用java发送url请求,并获取服务器返回的值 第一种方法: 复制代码 代码如下: import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFor

  • java后台发起get请求获取响应数据

    本文实例为大家分享了java后台发起get请求获取响应数据,供大家参考,具体内容如下 学习记录: 话不多说直接上代码: package com.jl.chromeTest; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java

  • Java发起http请求的完整步骤记录

    前言 在未来做项目中,一些功能模块可能会采用不同的语言进行编写.这就需要http请求进行模块的调用.那么下面,我将以Java为例,详细说明如何发起http请求. 一.GET与POST GET和POST是HTTP的两个常用方法. GET指从指定的服务器中获取数据 POST指提交数据给指定的服务器处理 1.GET方法 使用GET方法,需要传递的参数被附加在URL地址后面一起发送到服务器. 例如:http://121.41.111.94/submit?name=zxy&age=21 特点: GET请求

  • java发起http请求调用post与get接口的方法实例

    目录 一.java调用post接口 1.使用URLConnection或者HttpURLConnection 2.使用CloseableHttpClient 3.使用HttpCaller 二.java调用get接口 总结 一.java调用post接口 1.使用URLConnection或者HttpURLConnection java自带的,无需下载其他jar包 URLConnection方式调用,如果接口响应码被服务端修改则无法接收到返回报文,只能当响应码正确时才能接收到返回 public st

  • js+ajax处理java后台返回的json对象循环创建到表格的方法

    本文实例讲述了js+ajax处理java后台返回的json对象循环创建到表格的方法.分享给大家供大家参考,具体如下: //注:LO是表格的id: 需要自己创建表头, n行,9列的表格: var tab_id; function varify(cardinno) { tab_id=document.getElementById("Layer1"); displayDiv(); tab_id.style.display="none"; var url="get

  • PHP给前端返回一个JSON对象的实例讲解

    解决问题:用php做后台时,如何给前端发起的AJAX请求返回一个JSON格式的"对象": 说明:我本身是一个前端,工作久了之后发现要是不掌握一门后端开发语言的话,总感觉有点无力.最近在边做自己的个人网站边学习php,在写验证码验证的时候,需要给前端发起的验证请求返回一个便于操作的数据,于是自然就想到了返回一个JSON格式的"对象". 在网上查了很多写法,无奈大多不行,最后在stackoverflow上终于找到原因并改写代码,亲测有用,于是记录下来,希望对后来人有所帮

  • java开发https请求ssl不受信任问题解决方法

    本文主要讨论的是java开发https请求ssl不受信任的解决方法,具体分析及实现代码如下. 在java代码中请求https链接的时候,可能会报下面这个错误 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unab

  • Java发送http请求的示例(get与post方法请求)

    package com.jiucool.www.struts.action;  import java.io.BufferedReader;  import java.io.DataOutputStream;  import java.io.File;  import java.io.FileReader;  import java.io.IOException;  import java.io.InputStreamReader;  import java.net.HttpURLConnect

  • Java系统变量参数获取设置System.getProperties()的方法

    1.获取 String osName =System.getProperties().getProperty("os.name"); System.out.println(osName); 结果输出:Windows 10 2.设置 System.setProperty("jdbc.drivers","xxx"); 这时系统变量才会输出jdbc.drivers系统变量名 3.常用参数 package com.sd3e.projectmanager.

随机推荐