模拟POST请求

工具类:

package com.wangyin.platarch.pla.common.util;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.swing.text.html.parser.Entity;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;


public class HttpClientUtil {
 
	/**
	 * 发送post请求,获取响应内容
	 * @param url
	 * @param obj
	 * @param requestCls
	 * @param httpConnectionTimeout
	 * @param soTimeout
	 * @return
	 * @throws Exception
	 */
      public static String post(String url,Object obj,Class requestCls,int httpConnectionTimeout,int soTimeout) throws Exception{
    	  DefaultHttpClient httpclient = new DefaultHttpClient();
    	  
    	  httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, httpConnectionTimeout);
    	  httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, soTimeout);
    	  
    	  Map<String, Object> paramMap = EntityUtil.getEntityMap(obj,requestCls);
		  HttpPost httpost=postForm(url,paramMap);
    	  HttpResponse httpResponse = httpclient.execute(httpost);
    	  String body=paseResponse(httpResponse);
    	  httpclient.getConnectionManager().shutdown();
    	  return body;
      }
      
      

	public static void main(String[] args) {
		
	}


	/**
       * 获取httpost
       * @param url
       * @param params
       * @return
	 * @throws Exception 
       */
      private static HttpPost postForm(String url, Map<String, Object> params) throws Exception{  
          
          HttpPost httpost = new HttpPost(url);  
          List<NameValuePair> nvps = new ArrayList <NameValuePair>();  
            
          Set<String> keySet = params.keySet();  
          for(String key : keySet) {  
              nvps.add(new BasicNameValuePair(key, params.get(key).toString()));  
          }  
          httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));  
          return httpost;  
      } 
      
      /**
       * 解析响应信息
       * @param response
       * @return
       * @throws Exception
       */
      private static String paseResponse(HttpResponse response) throws Exception {  
          HttpEntity entity = response.getEntity();  
            
          String charset = EntityUtils.getContentCharSet(entity);  
          String body= EntityUtils.toString(entity);  
          return body;  
      }  
      
}


调用方式举例:


@Test
    public void testPOST() {
        OrderCreateRequest request = new OrderCreateRequest();
        request.setAppKey("TPR");
        request.setVersion("1.0");
        request.setArea("1");
        request.setCashier("wallet");
        request.setDenomination(80.6f);
        request.setIsp(IspTypeEnum.ChinaUnicom.getCode() + "");
        request.setMemberId("121313");
        request.setMobile("18612136171");
        request.setOrderType("300");
        request.setSkuId("121312");
        request.setUserPin("tob蓝波湾");
        String data = null;
        try {
            data = HttpClientUtil.post("http://localhost:8080/order/create", request, OrderCreateRequest.class, 30000,
                    30000);
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println(data);
    }


EntityUtil.java


package com.wangyin.platarch.pla.common.util;

import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

/**
 * 实体类操作
 * @author litao10
 *
 */
public class EntityUtil {

	/**
     * 反射实体类为key:value
     * @param obj
     * @param requestCls
     * @return
     * @throws Exception
     */
    
    public static Map<String, Object> getEntityMap(Object obj,Class requestCls) throws Exception{
  	  Map<String, Object> paramMap=new HashMap<String, Object>();
	    	Method[] methods = requestCls.getMethods();
		    for(Method method:methods){
		    	if(method.getName().startsWith("get")&&!method.getName().toLowerCase().contains("class")){
		    		//获取方法名,去掉get
		    		String key=getFieldNameByMethodname(method.getName());
		    		Object object = method.invoke(obj, null);
					Object value = object!=null?object:"";
		    		paramMap.put(key, value);
		    	}
		    	
		    }
		    return paramMap;
	  }
    
    /**
     * 根据get方法名获取变量名称
     * @param name
     * @return
     */
	private static String getFieldNameByMethodname(String name) {
		StringBuffer sb=new StringBuffer(name.substring(3));
		sb.setCharAt(0, Character.toLowerCase(sb.charAt(0)));
		return sb.toString();
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值