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

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

最近项目上有个小功能需要调用第三方的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;
	}

总结到此!

猜你喜欢

转载自quainter.iteye.com/blog/2231502