JAVA中使用HTTPclient访问url取得数据

第一次写博客有点小激动呢 :oops:

最近项目上有个小功能需要调用第三方的http接口取数据,用到了HTTPclient,算是做个笔记吧!
1、使用get方法取得数据

/**
* 根据URL试用get方法取得返回的数据
* @param url
* URL地址,参数直接挂在URL后面即可
* @return
*/
public static String getGetDateByUrl(String url){

String data = null;
//构造HttpClient的实例
HttpClient httpClient = new HttpClient();
//创建GET方法的实例
GetMethod getMethod = new GetMethod(url);
//设置头信息:如果不设置User-Agent可能会报405,导致取不到数据
getMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:39.0) Gecko/20100101 Firefox/39.0");
//使用系统提供的默认的恢复策略
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
try{
//开始执行getMethod
int statusCode = httpClient.executeMethod(getMethod);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed:" + getMethod.getStatusLine());
}
//读取内容
byte[] responseBody = getMethod.getResponseBody();
//处理内容
data = new String(responseBody);
}catch (HttpException e){
//发生异常,可能是协议不对或者返回的内容有问题
System.out.println("Please check your provided http address!");
data = "";
e.printStackTrace();
}catch(IOException e){
//发生网络异常
data = "";
e.printStackTrace();
}finally{
//释放连接
getMethod.releaseConnection();
}
return data;
}


2、使用post方法取得数据

/**
* 根据post方法取得返回数据
* @param url
* URL地址
* @param array
* 需要以post形式提交的参数
* @return
*/
public static String getPostDateByUrl(String url,Map<String ,String> array){
String data = null;
//构造HttpClient的实例
HttpClient httpClient = new HttpClient();
//创建post方法的实例
PostMethod postMethod = new PostMethod(url);
//设置头信息
postMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:39.0) Gecko/20100101 Firefox/39.0");
postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
//遍历设置要提交的参数
Iterator it = array.entrySet().iterator();
while (it.hasNext()){
Map.Entry<String,String> entry =(Map.Entry) it.next();
String key = entry.getKey();
String value = entry.getValue().trim();
postMethod.setParameter(key,value);
}
//使用系统提供的默认的恢复策略
postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
try{
//执行postMethod
int statusCode = httpClient.executeMethod(postMethod);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed:" + postMethod.getStatusLine());
}
//读取内容
byte[] responseBody = postMethod.getResponseBody();
//处理内容
data = new String(responseBody);
}catch (HttpException e){
//发生致命的异常,可能是协议不对或者返回的内容有问题
System.out.println("Please check your provided http address!");
data = "";
e.printStackTrace();
}catch(IOException e){
//发生网络异常
data = "";
e.printStackTrace();
}finally{
//释放连接
postMethod.releaseConnection();
}
System.out.println(data);
return data;
}

总结到此!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值