`

使用HttpClient 后台调用接口

阅读更多
//接口与对象的条件绑定并返回json数据
public static String executeHttpRequestByGetType(String url,Object obj ) {  
	HttpClient client = new HttpClient();  
	StringBuffer sb = new StringBuffer(url);  
	Map<String, String> keyValueMap=objectToMap(obj);
	PostMethod postMethod = null;  
	try {  
	    //设置请求参数  
	    if (keyValueMap != null) {  
	        Iterator it = keyValueMap.entrySet().iterator();  
	        if (keyValueMap.size() > 0) {  
	            sb.append("?");  
	             while (it.hasNext()) {  
	                  Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next();  
	                  sb.append(entry.getKey() + "=" + entry.getValue() + "&");  
	              }  
	             sb.deleteCharAt(sb.length()-1);  
	         }  
	     }  
	     postMethod = new PostMethod(sb.toString());  
	     //log.debug("query uri ===============" + postMethod.getURI()); 
	     // 设置成了默认的恢复策略,在发生异常时候将自动重试3次,
	     postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());  
	     //设置参数编码为gbk
	     postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");  
	     //设置超时时间  
	     postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 200000);
	     //HttpClient第一步中创建好的实例的 executeMethod 方法来执行第二步中创建好的 method 实例
	     int statusCode = client.executeMethod(postMethod);  
	     if (statusCode != HttpStatus.SC_OK) {  
	         //log.info("request '" + url + "' failed,the status is not 200,status:" + statusCode);  
	         return "";  
	     }  
	     String responseBody = postMethod.getResponseBodyAsString();  
	     return responseBody;  
	     } catch (Exception e) {  
	            //log.error("发生异常!请检查网络和参数", e);  
	      } finally {  
	            if(postMethod!=null){  
	               postMethod.releaseConnection();  
	            }  
	        }  
	      return null;  
       }
@Test
public void test(){
	TestBean be=new TestBean();
	InterfaceData da=new InterfaceData();
	String url= "http://59.111.44.97:9096/webapi/TakeAll";//接口地址
	Map<String, String> msp=new HashMap<String, String>();
	String s=da.executeHttpRequestByGetType(url,be);
	//JSONUtil.deserialize(s);
	System.out.println(s);
 }
	 
//object转化为Map
public static Map<String,String> objectToMap(Object obj){
        Map<String,String> map=null;
        if(obj==null){
	   return map;
	}else{
	   try {
		map= new HashMap<String,String>();
		BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
		PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
		for (PropertyDescriptor property : propertyDescriptors) {    
		      String key = property.getName();    
		      if (key.compareToIgnoreCase("class") == 0) {   
		          continue;  
		      }  
		      Method getter = property.getReadMethod();  
		      Object value = getter!=null ? getter.invoke(obj) : null;
		      if(value!=null){
		       	map.put(key, value.toString());  
		       }
		   }    
		  return map;  
		  } catch (IntrospectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		  }catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		  } catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		  } catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		  } 
		return null;
	     }
     }

 

分享到:
评论

相关推荐

    mvc后台调用webapi接口

    在本案例“mvc后台调用webapi接口”中,我们将探讨如何在MVC应用中调用WebAPI接口来实现数据交互。 WebAPI是.NET Framework的一部分,它允许开发者创建RESTful服务。REST(Representational State Transfer)是一种...

    如何在WPF应用程序中通过HttpClient调用Web API

    当调用这个方法时,WPF UI不会被阻塞,因为异步操作在后台执行。当请求完成时,我们更新UI,展示返回的数据。 为了更进一步,你可以扩展此示例,支持POST、PUT、DELETE等其他HTTP方法,只需在`HttpClient`上调用...

    Java通过HttpClient调用百度地图Demo

    在Java编程中,HttpClient是一个非常常用的库,用于执行HTTP请求,可以用来与各种Web服务进行交互,包括调用API接口。在这个特定的示例中,我们关注的是如何使用HttpClient来调用百度地图的API,创建一个简单的Demo...

    java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)

    本篇文章将深入讲解如何使用`HttpURLConnection`类来模拟浏览器请求,并通过实例展示其在接口调用中的应用。 首先,`HttpURLConnection`是`java.net.URLConnection`的一个子类,用于处理HTTP协议。在使用`...

    .net 调用API接口全(get,post)

    return HttpClientHelper.Post, T&gt;(url, model, headers); } public static U Get, T&gt;(string url, T model, NameValueCollection headers = null) { return HttpClientHelper.Get, T&gt;(url, model, headers); ...

    java调用 人脸识别接口demo

    2. Java类:包含调用接口的逻辑,包括发送请求、处理响应和展示结果。 3. 测试数据:可能是一些示例图片,用于测试接口功能。 4. Maven或Gradle配置:项目构建和依赖管理。 5. 主函数或启动脚本:运行示例代码的入口...

    java后台实现支付宝支付接口和支付宝订单查询接口(前端为APP)

    Java后台实现支付宝支付接口和支付宝订单查询接口 本文主要介绍了Java后台实现支付宝支付接口和支付宝订单查询接口的详细过程,旨在帮助开发者快速实现支付宝支付功能。 一、申请公司企业账号并开通应用 首先,...

    winform调用webapi获取Token授权案例,webapi使用oauth2.0权限控制

    本案例主要涉及如何在WinForm应用中通过HttpClient调用使用OAuth2.0授权的WebAPI接口。OAuth2.0是一种广泛采用的授权框架,用于安全地授予第三方应用访问用户资源的权限,而无需共享用户凭据。 首先,让我们深入...

    百度搜索接口java后台

    在IT行业中,与“百度搜索接口java后台”相关的知识点涵盖了搜索引擎接口的使用、Java编程语言以及后台服务开发。本文将详细解析这些关键概念,并提供如何使用Java后台来对接百度搜索接口的方法。 首先,我们需要...

    c# 服务端调用RestFul Service的方法

    本文档将详细介绍如何使用 C# 创建和调用 RESTful 接口,包括 RESTful 的基本概念、如何构建 RESTful 风格的 API、服务端的具体实现步骤以及客户端如何调用服务端接口等内容。此外,还将提供详细的代码示例,以便...

    ssm+http调接口

    在SSM框架下,通过HTTP协议调用接口是一种常见的交互方式,尤其是在分布式系统或者微服务架构中。HTTP协议因其简单、灵活和无状态的特性,被广泛用于客户端和服务器之间的通信。 在SSM框架中,HTTP接口调用通常涉及...

    android+flutter登录页面和简单接口调用

    本话题将探讨如何在Flutter中创建一个登录页面以及如何通过HttpClient调用简单的接口来进行登录逻辑处理。 1. **Flutter框架介绍**:Flutter是Google推出的一个开源UI工具包,用于构建高性能、高保真、跨平台的移动...

    winform桌面程序如何调用后台API的方法(一)

    后台API通常是指运行在服务器端的接口,允许客户端应用程序与其通信。 在WinForm中调用后台API,主要涉及以下步骤: 1. **创建HTTP请求**:使用.NET Framework或.NET Core提供的HttpClient类来创建HTTP请求。首先...

    新中新电子 C# 调用 第三方接口

    在IT行业中,调用第三方接口是一项常见的任务,特别是在软件开发中。C#作为一种广泛应用的编程语言,被广泛用于构建各种应用程序,包括与外部系统交互。本文将深入探讨新中新电子如何利用C#来调用第三方接口,以及在...

    HttpClient库

    6. **异步操作**:对于性能要求高的应用,HttpClient库可能会提供异步请求接口,允许在后台线程中执行HTTP请求,而不阻塞主线程,提高用户体验。 7. **可扩展性**:HttpClient库通常会设计为模块化,允许开发者根据...

    android调用webservice接口实现登陆源码

    在Android开发中,调用Web Service接口是常见的数据交互方式,尤其在实现用户登录功能时。Web Service通常采用SOAP或RESTful API的形式提供服务,允许客户端应用程序(如Android应用)发送请求并接收响应。本教程将...

    .net 后台Post,get方式调用webapi

    本文将详细讲解如何在.NET后台使用这两种方法调用WebAPI,以及如何实现文件上传。 1. GET方式调用WebAPI: GET请求通常用于获取资源,不修改服务器状态。在.NET中,可以使用HttpClient类来发送GET请求。首先,需要...

    .NET Core使用HttpClient进行表单提交时遇到的问题

    在微信支付接口文档也说明了,需要使用 multipart/form-data 的方式发送请求。.NET 提供了 MultipartFormDataContent 类型,帮助我们构建表单请求,故有以下代码: var form = new MultipartFormDataContent() { {...

    Java后端HttpClient Post提交文件流 及服务端接收文件流

    HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。

    基于HttpClient的HttpUtils(后台访问URL)

    基于HttpClient的HttpUtils是开发者自定义封装的工具类,方便在后台程序中高效、便捷地访问远程URL。本篇将详细介绍HttpUtils的实现原理及其核心功能。 首先,HttpClient是由Apache软件基金会提供的一个开源项目,...

Global site tag (gtag.js) - Google Analytics