JAVA发送http get/post请求,调用http接口、方法详解
三个例子—JAVA发送httpget/post请求,调用http接口、方法
例1:使用HttpClient(commons-httpclient-3.0.jar
jar下载地址:http://xiazai.jb51.net/201904/yuanma/commons-httpclient-3.0.rar
importjava.io.ByteArrayInputStream;
importjava.io.ByteArrayOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importorg.apache.commons.httpclient.HttpClient;
importorg.apache.commons.httpclient.methods.InputStreamRequestEntity;
importorg.apache.commons.httpclient.methods.PostMethod;
importorg.apache.commons.httpclient.methods.RequestEntity;
publicclassHttpTool{
/**
*发送post请求
*
*@authorMichael-----CSDN:http://blog.csdn.net/capmiachael
*@paramparams
*参数
*@paramrequestUrl
*请求地址
*@paramauthorization
*授权书
*@return返回结果
*@throwsIOException
*/
publicstaticStringsendPost(Stringparams,StringrequestUrl,
Stringauthorization)throwsIOException{
byte[]requestBytes=params.getBytes("utf-8");//将参数转为二进制流
HttpClienthttpClient=newHttpClient();//客户端实例化
PostMethodpostMethod=newPostMethod(requestUrl);
//设置请求头Authorization
postMethod.setRequestHeader("Authorization","Basic"+authorization);
//设置请求头Content-Type
postMethod.setRequestHeader("Content-Type","application/json");
InputStreaminputStream=newByteArrayInputStream(requestBytes,0,
requestBytes.length);
RequestEntityrequestEntity=newInputStreamRequestEntity(inputStream,
requestBytes.length,"application/json;charset=utf-8");//请求体
postMethod.setRequestEntity(requestEntity);
httpClient.executeMethod(postMethod);//执行请求
InputStreamsoapResponseStream=postMethod.getResponseBodyAsStream();//获取返回的流
byte[]datas=null;
try{
datas=readInputStream(soapResponseStream);//从输入流中读取数据
}catch(Exceptione){
e.printStackTrace();
}
Stringresult=newString(datas,"UTF-8");//将二进制流转为String
//打印返回结果
//System.out.println(result);
returnresult;
}
/**
*从输入流中读取数据
*
*@paraminStream
*@return
*@throwsException
*/
publicstaticbyte[]readInputStream(InputStreaminStream)throwsException{
ByteArrayOutputStreamoutStream=newByteArrayOutputStream();
byte[]buffer=newbyte[1024];
intlen=0;
while((len=inStream.read(buffer))!=-1){
outStream.write(buffer,0,len);
}
byte[]data=outStream.toByteArray();
outStream.close();
inStream.close();
returndata;
}
}
例2:
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.io.UnsupportedEncodingException;
importjava.net.HttpURLConnection;
importjava.net.InetSocketAddress;
importjava.net.Proxy;
importjava.net.URL;
importjava.net.URLConnection;
importjava.util.List;
importjava.util.Map;
/**
*Http请求工具类
*@authorsnowfigure
*@since2014-8-2413:30:56
*@versionv1.0.1
*/
publicclassHttpRequestUtil{
staticbooleanproxySet=false;
staticStringproxyHost="127.0.0.1";
staticintproxyPort=8087;
/**
*编码
*@paramsource
*@return
*/
publicstaticStringurlEncode(Stringsource,Stringencode){
Stringresult=source;
try{
result=java.net.URLEncoder.encode(source,encode);
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
return"0";
}
returnresult;
}
publicstaticStringurlEncodeGBK(Stringsource){
Stringresult=source;
try{
result=java.net.URLEncoder.encode(source,"GBK");
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
return"0";
}
returnresult;
}
/**
*发起http请求获取返回结果
*@paramreq_url请求地址
*@return
*/
publicstaticStringhttpRequest(Stringreq_url){
StringBufferbuffer=newStringBuffer();
try{
URLurl=newURL(req_url);
HttpURLConnectionhttpUrlConn=(HttpURLConnection)url.openConnection();
httpUrlConn.setDoOutput(false);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
httpUrlConn.setRequestMethod("GET");
httpUrlConn.connect();
//将返回的输入流转换成字符串
InputStreaminputStream=httpUrlConn.getInputStream();
InputStreamReaderinputStreamReader=newInputStreamReader(inputStream,"utf-8");
BufferedReaderbufferedReader=newBufferedReader(inputStreamReader);
Stringstr=null;
while((str=bufferedReader.readLine())!=null){
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
//释放资源
inputStream.close();
inputStream=null;
httpUrlConn.disconnect();
}catch(Exceptione){
System.out.println(e.getStackTrace());
}
returnbuffer.toString();
}
/**
*发送http请求取得返回的输入流
*@paramrequestUrl请求地址
*@returnInputStream
*/
publicstaticInputStreamhttpRequestIO(StringrequestUrl){
InputStreaminputStream=null;
try{
URLurl=newURL(requestUrl);
HttpURLConnectionhttpUrlConn=(HttpURLConnection)url.openConnection();
httpUrlConn.setDoInput(true);
httpUrlConn.setRequestMethod("GET");
httpUrlConn.connect();
//获得返回的输入流
inputStream=httpUrlConn.getInputStream();
}catch(Exceptione){
e.printStackTrace();
}
returninputStream;
}
/**
*向指定URL发送GET方法的请求
*
*@paramurl
*发送请求的URL
*@paramparam
*请求参数,请求参数应该是name1=value1&name2=value2的形式。
*@returnURL所代表远程资源的响应结果
*/
publicstaticStringsendGet(Stringurl,Stringparam){
Stringresult="";
BufferedReaderin=null;
try{
StringurlNameString=url+"?"+param;
URLrealUrl=newURL(urlNameString);
//打开和URL之间的连接
URLConnectionconnection=realUrl.openConnection();
//设置通用的请求属性
connection.setRequestProperty("accept","*/*");
connection.setRequestProperty("connection","Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
//建立实际的连接
connection.connect();
//获取所有响应头字段
Map>map=connection.getHeaderFields();
//遍历所有的响应头字段
for(Stringkey:map.keySet()){
System.out.println(key+"--->"+map.get(key));
}
//定义BufferedReader输入流来读取URL的响应
in=newBufferedReader(newInputStreamReader(
connection.getInputStream()));
Stringline;
while((line=in.readLine())!=null){
result+=line;
}
}catch(Exceptione){
System.out.println("发送GET请求出现异常!"+e);
e.printStackTrace();
}
//使用finally块来关闭输入流
finally{
try{
if(in!=null){
in.close();
}
}catch(Exceptione2){
e2.printStackTrace();
}
}
returnresult;
}
/**
*向指定URL发送POST方法的请求
*
*@paramurl
*发送请求的URL
*@paramparam
*请求参数,请求参数应该是name1=value1&name2=value2的形式。
*@paramisproxy
*是否使用代理模式
*@return所代表远程资源的响应结果
*/
publicstaticStringsendPost(Stringurl,Stringparam,booleanisproxy){
OutputStreamWriterout=null;
BufferedReaderin=null;
Stringresult="";
try{
URLrealUrl=newURL(url);
HttpURLConnectionconn=null;
if(isproxy){//使用代理模式
@SuppressWarnings("static-access")
Proxyproxy=newProxy(Proxy.Type.DIRECT.HTTP,newInetSocketAddress(proxyHost,proxyPort));
conn=(HttpURLConnection)realUrl.openConnection(proxy);
}else{
conn=(HttpURLConnection)realUrl.openConnection();
}
//打开和URL之间的连接
//发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST");//POST方法
//设置通用的请求属性
conn.setRequestProperty("accept","*/*");
conn.setRequestProperty("connection","Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
conn.connect();
//获取URLConnection对象对应的输出流
out=newOutputStreamWriter(conn.getOutputStream(),"UTF-8");
//发送请求参数
out.write(param);
//flush输出流的缓冲
out.flush();
//定义BufferedReader输入流来读取URL的响应
in=newBufferedReader(
newInputStreamReader(conn.getInputStream()));
Stringline;
while((line=in.readLine())!=null){
result+=line;
}
}catch(Exceptione){
System.out.println("发送POST请求出现异常!"+e);
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}
catch(IOExceptionex){
ex.printStackTrace();
}
}
returnresult;
}
publicstaticvoidmain(String[]args){
//demo:代理访问
Stringurl="http://api.adf.ly/api.php";
Stringpara="key=youkeyid&youuid=uid&advert_type=int&domain=adf.ly&url=http://somewebsite.com";
Stringsr=HttpRequestUtil.sendPost(url,para,true);
System.out.println(sr);
}
}
例3
/**
*发送Httppost请求
*
*@paramxmlInfo
*json转化成的字符串
*@paramURL
*请求url
*@return返回信息
*/
publicstaticStringdoHttpPost(StringxmlInfo,StringURL){
System.out.println("发起的数据:"+xmlInfo);
byte[]xmlData=xmlInfo.getBytes();
InputStreaminstr=null;
java.io.ByteArrayOutputStreamout=null;
try{
URLurl=newURL(URL);
URLConnectionurlCon=url.openConnection();
urlCon.setDoOutput(true);
urlCon.setDoInput(true);
urlCon.setUseCaches(false);
urlCon.setRequestProperty("content-Type","application/json");
urlCon.setRequestProperty("charset","utf-8");
urlCon.setRequestProperty("Content-length",
String.valueOf(xmlData.length));
System.out.println(String.valueOf(xmlData.length));
DataOutputStreamprintout=newDataOutputStream(
urlCon.getOutputStream());
printout.write(xmlData);
printout.flush();
printout.close();
instr=urlCon.getInputStream();
byte[]bis=IOUtils.toByteArray(instr);
StringResponseString=newString(bis,"UTF-8");
if((ResponseString==null)||("".equals(ResponseString.trim()))){
System.out.println("返回空");
}
System.out.println("返回数据为:"+ResponseString);
returnResponseString;
}catch(Exceptione){
e.printStackTrace();
return"0";
}finally{
try{
out.close();
instr.close();
}catch(Exceptionex){
return"0";
}
}
}
以上所述是小编给大家介绍的Java发送httpget/post请求调用接口/方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!