java发起http请求获取返回的Json对象方法
话不多说,先看代码!
/**
*Createdbydavidon2017-7-5.
*/
importcom.google.gson.JsonObject;
importcom.google.gson.JsonParser;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.net.HttpURLConnection;
importjava.net.URL;
publicclassHttpRequestUtil{
/**
*发起http请求并获取结果
*@paramrequestUrl请求地址
*/
publicstaticJsonObjectgetXpath(StringrequestUrl){
Stringres="";
JsonObjectobject=null;
StringBufferbuffer=newStringBuffer();
try{
URLurl=newURL(requestUrl);
HttpURLConnectionurlCon=(HttpURLConnection)url.openConnection();
if(200==urlCon.getResponseCode()){
InputStreamis=urlCon.getInputStream();
InputStreamReaderisr=newInputStreamReader(is,"utf-8");
BufferedReaderbr=newBufferedReader(isr);
Stringstr=null;
while((str=br.readLine())!=null){
buffer.append(str);
}
br.close();
isr.close();
is.close();
res=buffer.toString();
JsonParserparse=newJsonParser();
object=(JsonObject)parse.parse(res);
}
}catch(IOExceptione){
e.printStackTrace();
}
returnobject;
}
publicstaticJsonObjectpostDownloadJson(Stringpath,Stringpost){
URLurl=null;
try{
url=newURL(path);
HttpURLConnectionhttpURLConnection=(HttpURLConnection)url.openConnection();
httpURLConnection.setRequestMethod("POST");//提交模式
//conn.setConnectTimeout(10000);//连接超时单位毫秒
//conn.setReadTimeout(2000);//读取超时单位毫秒
//发送POST请求必须设置如下两行
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
//获取URLConnection对象对应的输出流
PrintWriterprintWriter=newPrintWriter(httpURLConnection.getOutputStream());
//发送请求参数
printWriter.write(post);//post的参数xx=xx&yy=yy
//flush输出流的缓冲
printWriter.flush();
//开始获取数据
BufferedInputStreambis=newBufferedInputStream(httpURLConnection.getInputStream());
ByteArrayOutputStreambos=newByteArrayOutputStream();
intlen;
byte[]arr=newbyte[1024];
while((len=bis.read(arr))!=-1){
bos.write(arr,0,len);
bos.flush();
}
bos.close();
JsonParserparse=newJsonParser();
return(JsonObject)parse.parse(bos.toString("utf-8"));
}catch(Exceptione){
e.printStackTrace();
}
returnnull;
}
//测试
publicstaticvoidmain(Stringargs[]){
JsonObjectres=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对象方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。