调用接口的两种方法

public class HttpClientPost{
    @Test
    public void form() throws Exception{
        String url="http://localhost:7900/cart/save";
        Map<String,String> paraMap = new HashMap<String,String>();
        paraMap.put("userId","7");

        String result = httpPostWithForm(rl,paraMap);
        System.out.println(result);
    }
    
    public static String httpPostWithForm(String url,Map<String,String> paraMap) throws Exception{
    HttpPost httpPost = new HttpPost(url);
    CloseableHttpClient client = HttpClients.createDefault();
    String respContent = null;

    //遍历参数map,设置表单参数
    List<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>();
    for(Map.Entry<String,String>entry : paraMap.entrySet()){
        pairList.add(new BasicNameValuePair(entry.getKeyy(),entry.getValue()));
        }
        httpPost.setEntity(new UrlEncodedFormEntity(pairList,"utf-8"));
        HttpResponse resp = client.execute(httpPost);
        if(resp.getStatusLine().getStatusCode() == 200){
            HttpEntity he = resp.getEntity();
            respContent = EntityUtils.toString(he,"utf-8");
        }
        return respContent;
    }

    @Test
    public void json() throws Rxception{
        String url = "http://localhost:8070/cart";
        String result = httpPostWithJSON(url);
        System.out.println(result);
    }

    public static String httpPostWithJSON(String url) throws Exception{
        HttpPost httpPost == new HttpPost(url);
        CloseableHttpClient client = HttpClients.createDefault();
        String respContent = null;

        //json方式
        JSONObject jsonParam = new JSONObject();
        jsonParam.put("name","admin");
        StringEntity entity = new StringEntity(jsonParam.toString(),"utf-8");//解决中文乱码
        entity.setContentEncoding("UTF-8");
        entity.setContenType("application/json");
        httpPost.setEntitty(entity);
        HttpResponse resp = client.execute(httpPost);
        if(resp.getStatusLine().getStatusCode() == 200){
            HttpEntity he = resp.getEnttity();
            respContent = EntityUtils.toString(he,"UTF-8");
        }
        return respContent;
    }
}

第二种

package workshop.Common.httpApi;


import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpHost;
import org.apache.http.client.methods.HttpGet;
import org.springframework.http.*;
import org.springframework.http.HttpHeaders;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;
import java.util.Set;

public class HttpUtil {

    private HttpUtil(){

    }

    /**
     * 连接超时时间
     */
    private static final int CONN_TIMEOUT = 30000;
    /**
     * 请求超时时间
     */
    private static final int READ_TIMEOUT = 30000;

    private static RestTemplate restTemplate = null;

    static{
        //设置超时时间
        SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
        requestFactory.setConnectTimeout(CONN_TIMEOUT);
        requestFactory.setReadTimeout(READ_TIMEOUT);
        restTemplate =  new RestTemplate(requestFactory);
    }

    /**
     * 设置header公共参数
     */
    private static HttpHeaders initHeader(){
        HttpHeaders headers = new HttpHeaders();
        headers.add("Accept", "application/json");
        headers.add("Accpet-Encoding", "gzip");
        headers.add("Content-Encoding", "UTF-8");
        headers.add("Content-Type", "application/json; charset=UTF-8");
        return headers;
    }

    /**
     * 设置header公共参数
     */
    private static HttpHeaders initHeaderX(){
        HttpHeaders headers = new HttpHeaders();
        headers.add("Accept", "application/x-www-form-urlencoded");
        headers.add("Accpet-Encoding", "gzip");
        headers.add("Content-Encoding", "UTF-8");
        headers.add("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        return headers;
    }

    /**
     * 设置header参数
     * @param httpHeaders
     * @param headers
     */
    private static void setHeaderParam(HttpHeaders httpHeaders,Map<String,Object> headers){
        if(!CollectionUtils.isEmpty(headers)){
            Set<String> keys = headers.keySet();
            for(String key:keys){
                httpHeaders.add(key,headers.get(key).toString());
            }
        }

    }

    /**
     * 设置参数
     * @param param
     * @return
     */
    private static MultiValueMap<String,Object> setParam(Map<String,Object> param){
        MultiValueMap<String,Object> valueMap = new LinkedMultiValueMap<>();
        if(CollectionUtils.isEmpty(param)){
            return valueMap;
        }
        Set<String> paramKeys = param.keySet();
        for(String key:paramKeys){
            valueMap.add(key,param.get(key).toString());
        }
        return valueMap;
    }

    /**
     * 发送Get请求
     * @param url 请求地址
     * @param headers 请求头参数
     * @return
     */
    public static String httpGet(String url,Map<String,Object> headers){

        //初始化header公共参数
        HttpHeaders httpHeaders = initHeader();
        //设置header参数
        setHeaderParam(httpHeaders,headers);
        //发送请求
        HttpEntity httpEntity = new HttpEntity(null,httpHeaders);
        HttpGet get = new HttpGet(url);
        ResponseEntity<String> responseEntity = restTemplate.exchange(get.toString(), HttpMethod.GET,httpEntity,String.class);
        return responseEntity.getBody();

    }


    /**
     * 发送Get请求
     * @param url 请求地址
     * @param headers 请求头参数
     * @param param 查询参数
     * @return
     */
    public static String httpGet(String url, Map<String,Object> headers,Map<String,Object> param){

        //如果查询参数为空,则调用不带参数的Get请求
        if(CollectionUtils.isEmpty(param)){
            return httpGet(url,headers);
        }

        //组装查询参数
        Set<String> keys = param.keySet();
        StringBuilder builder = new StringBuilder();
        builder.append("?");
        for(String key:keys){
            builder.append(key).append("=").append(param.get(key)).append("&");
        }
        builder.deleteCharAt(builder.lastIndexOf("&"));
        url = url+builder.toString();
        //发送请求
        return httpGet(url,headers);

    }


    /**
     * 发送Post请求
     * @param url 请求地址
     * @param param 请求参数
     * @return
     */
    public static String httpPost(String url,Map<String,Object> param){

        //初始化header公共参数
        HttpHeaders httpHeaders = initHeader();
        //设置参数
        MultiValueMap<String,Object> valueMap = setParam(param);
        //发送请求
        return toPost(url,httpHeaders,valueMap);
    }

    /**
     * 发送Post请求
     * @param url 请求地址
     * @param json json格式参数参数
     * @return
     */
    public static ResponseEntity<String> httpPost(String url,String json){

        //初始化header公共参数
        HttpHeaders httpHeaders = initHeader();
        //发送请求
        return toPost(url,httpHeaders,json);
    }

    /**
     * 发送Post请求
     * @param url 请求地址
     * @param json json格式参数参数
     * @return
     */
    public static String httpPost(String url,Map<String,Object> header,String json){

        //初始化header公共参数
        HttpHeaders httpHeaders = initHeader();
        setHeaderParam(httpHeaders,header);
        //发送请求
        return toPost(url,httpHeaders,json).getBody();
    }


    /**
     * 发送POST请求
     * @param url 请求地址
     * @param headers 请求头参数
     * @param param 查询参数
     * @return
     */
    public static String httpPost(String url, Map<String,Object> headers,Map<String,Object> param){
        HttpHeaders httpHeaders;
        if (headers != null){
            //初始化header公共参数
             httpHeaders = initHeader();
        }else {
             httpHeaders = initHeaderX();
        }

        //设置header参数
        setHeaderParam(httpHeaders,headers);
        //设置参数
        MultiValueMap<String,Object> valueMap = setParam(param);
        return toPost(url,httpHeaders,valueMap);

    }

    /**
     * 发送请求
     * @param valueMap
     * @param httpHeaders
     * @param url
     * @return
     */
    private static String toPost(String url,HttpHeaders httpHeaders,MultiValueMap<String,Object> valueMap){
        HttpEntity<MultiValueMap<String,Object>> httpEntity = new HttpEntity<>(valueMap,httpHeaders);
        ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST,httpEntity,String.class);
        return responseEntity.getBody();
    }

    /**
     * 发送请求
     * @param json
     * @param httpHeaders
     * @param url
     * @return
     */
    private static ResponseEntity<String> toPost(String url,HttpHeaders httpHeaders,String json){
        HttpEntity<String> httpEntity = new HttpEntity<>(json,httpHeaders);
        ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST,httpEntity,String.class);
        return responseEntity;
    }




}

//将参数封装成JSON字符串,看实际情况
public static String k3cPushOPTRPT(String token,Long id,Long sbid,int seq){
        Map<String,Object> param = new HashMap<>(4);
        param.put("id",id);
        param.put("Token",token);
        param.put("sbid",sbid);
        param.put("Seq",seq);
        return JSON.toJSONString(param);
    }
//调用
public Result pushOPTRPT(String token,Long id,Long sbid,int seq){


        String cod = BaseUtil.k3cPushOPTRPT(token,id,sbid,seq);

        Map<String,Object> map = new HashMap<>();
        map.put("param",cod);

        String url = k3cloundconfig.K3CURL+k3cloundconfig.K3CPUSHOPTRPT;
        String stateTransfer = HttpUtil.httpPost(url,null,map);
       // return stateTransfer;
        JSONObject json=JSONObject.parseObject(stateTransfer);

        Result res = new Result();
        res.setCode(json.get("Code"));
        res.setMessage(json.get("Message"));
        JSONArray array = (JSONArray) json.get("ActualNews");
        if(array != null){
            res.setActualNews(JSONObject.parseArray(array.toJSONString(), Actual.class));
        }
        return res;
    }

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值