Java分布式接口调用

转自:https://blog.csdn.net/yang_ai/article/details/70318208

 

 

public class Demo {
    @Autowired
    private ApiService apiService;
    private static final ObjectMapper OBJECTMAPPER = new ObjectMapper();
    @SuppressWarnings("unchecked")
    @Override
    public HashMap<String, Object> insertapplyinfo(HashMap<String, Object> map) {
            HttpResult result=apiService.doPut(http://192.168.0.1:80/rest/popularize/insertByCountLessThanThree", map);
            if(result.getCode().equals(200)){
                return OBJECTMAPPER.readValue(result.getBody(),HashMap.class);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

 

 

 

 

public class Demo {
    @Autowired
    private ApiService apiService;
    private static final ObjectMapper OBJECTMAPPER = new ObjectMapper();
    @SuppressWarnings("unchecked")
    @Override
    public HashMap<String, Object> insertapplyinfo(HashMap<String, Object> map) {
            HttpResult result=apiService.doPut(http://192.168.0.1:80/rest/popularize/insertByCountLessThanThree", map);
            if(result.getCode().equals(200)){
                return OBJECTMAPPER.readValue(result.getBody(),HashMap.class);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}
 

 

import java.io.IOException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
 
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
/**
 * 负责和外部接口对接,发起http请求
 */
@Service
public class ApiService {
 
    @Autowired(required = false)//使用到时才注册该对象
    private CloseableHttpClient httpClient;
 
    @Autowired(required = false)//使用到时才注册该对象
    private RequestConfig requestConfig;
 
    /**
     * 执行DoGET请求
     *
     * @param url
     * @return 如果响应是200,返回具体的响应内容,其他响应返回null
     * @throws ClientProtocolException
     * @throws IOException
     */
    public String doGet(String url) throws ClientProtocolException, IOException {
        // 创建http GET请求
        HttpGet httpGet = new HttpGet(url);
        httpGet.setConfig(this.requestConfig);
        CloseableHttpResponse response = null;
        try {
            // 执行请求
            response = httpClient.execute(httpGet);
            // 判断返回状态是否为200
            if (response.getStatusLine().getStatusCode() == 200) {
                return EntityUtils.toString(response.getEntity(), "UTF-8");
            }
        } finally {
            if (response != null) {
                response.close();
            }
        }
        return null;
    }
 
    /**
     * 带有参数的GET请求
     *
     * @param url
     * @param param
     * @return
     * @throws ClientProtocolException
     * @throws IOException
     * @throws URISyntaxException
     */
    public String doGet(String url, Map<String, Object> param) throws ClientProtocolException, IOException,
            URISyntaxException {
        // 定义请求的参数
        URIBuilder uriBuilder = new URIBuilder(url);
        for (Map.Entry<String, Object> entry : param.entrySet()) {
            uriBuilder.addParameter(entry.getKey(), entry.getValue().toString());
        }
        return doGet(uriBuilder.build().toString());
    }
 
    /**
     * 指定POST请求
     *
     * @param url
     * @param param 请求参数
     * @return 状态码和请求的body
     * @throws IOException
     */
    public HttpResult doPost(String url, Map<String, Object> param) throws IOException {
        // 创建http POST请求
        HttpPost httpPost = new HttpPost(url);
        httpPost.setConfig(this.requestConfig);
        if (param != null) {
            // 设置post参数
            List<NameValuePair> parameters = new ArrayList<NameValuePair>(0);
            for (Map.Entry<String, Object> entry : param.entrySet()) {
                parameters.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));
            }
            // 构造一个form表单式的实体,并且指定参数的编码为UTF-8
            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters, "UTF-8");
            // 将请求实体设置到httpPost对象中
            httpPost.setEntity(formEntity);
        }
 
        CloseableHttpResponse response = null;
        try {
            // 执行请求
            response = httpClient.execute(httpPost);
            if (response.getEntity() != null) {
                return new HttpResult(response.getStatusLine().getStatusCode(), EntityUtils.toString(
                        response.getEntity(), "UTF-8"));
            }
            return new HttpResult(response.getStatusLine().getStatusCode(), null);
        } finally {
            if (response != null) {
                response.close();
            }
        }
    }
 
    /**
     * 执行PUT请求
     *
     * @param url
     * @param param 请求参数
     * @return 状态码和请求的body
     * @throws IOException
     */
    public HttpResult doPut(String url, Map<String, Object> param) throws IOException {
        // 创建http POST请求
        HttpPut httpPut = new HttpPut(url);
        httpPut.setConfig(this.requestConfig);
        if (param != null) {
            // 设置post参数
            List<NameValuePair> parameters = new ArrayList<NameValuePair>(0);
            for (Map.Entry<String, Object> entry : param.entrySet()) {
                parameters.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));
            }
            // 构造一个form表单式的实体,并且指定参数的编码为UTF-8
            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters, "UTF-8");
            // 将请求实体设置到httpPost对象中
            httpPut.setEntity(formEntity);
        }
 
        CloseableHttpResponse response = null;
        try {
            // 执行请求
            response = httpClient.execute(httpPut);
            if (response.getEntity() != null) {
                return new HttpResult(response.getStatusLine().getStatusCode(), EntityUtils.toString(
                        response.getEntity(), "UTF-8"));
            }
            return new HttpResult(response.getStatusLine().getStatusCode(), null);
        } finally {
            if (response != null) {
                response.close();
            }
        }
    }
 
    /**
     * 指定POST请求
     *
     * @param url
     * @param param 请求参数
     * @return 状态码和请求的body
     * @throws IOException
     */
    public HttpResult doPostJson(String url, String json) throws IOException {
        // 创建http POST请求
        HttpPost httpPost = new HttpPost(url);
        httpPost.setConfig(this.requestConfig);
        if (json != null) {
            // 构造一个字符串的实体
            StringEntity stringEntity = new StringEntity(json, ContentType.APPLICATION_JSON);
            // 将请求实体设置到httpPost对象中
            httpPost.setEntity(stringEntity);
        }
 
        CloseableHttpResponse response = null;
        try {
            // 执行请求
            response = httpClient.execute(httpPost);
            if (response.getEntity() != null) {
                return new HttpResult(response.getStatusLine().getStatusCode(), EntityUtils.toString(
                        response.getEntity(), "UTF-8"));
            }
            return new HttpResult(response.getStatusLine().getStatusCode(), null);
        } finally {
            if (response != null) {
                response.close();
            }
        }
    }
 
    /**
     * 没有参数的post请求
     *
     * @param url
     * @return
     * @throws IOException
     */
    public HttpResult doPost(String url) throws IOException {
        return doPost(url, null);
    }
 
    /**
     * 执行PUT请求
     *
     * @param url
     * @return 状态码和请求的body
     * @throws IOException
     */
    public HttpResult doPut(String url) throws IOException {
        return this.doPut(url, null);
    }
 
    /**
     * 执行DELETE请求,通过POST提交,_method指定真正的请求方法
     *
     * @param url
     * @param param 请求参数
     * @return 状态码和请求的body
     * @throws IOException
     */
    public HttpResult doDelete(String url, Map<String, Object> param) throws IOException {
        param.put("_method", "DELETE");
        return this.doPost(url, param);
    }
 
    /**
     * 执行DELETE请求(真正的DELETE请求)
     *
     * @param url
     * @return 状态码和请求的body
     * @throws IOException
     */
    public HttpResult doDelete(String url) throws IOException {
        // 创建http DELETE请求
        HttpDelete httpDelete = new HttpDelete(url);
        httpDelete.setConfig(this.requestConfig);
        CloseableHttpResponse response = null;
        try {
            // 执行请求
            response = httpClient.execute(httpDelete);
            if (response.getEntity() != null) {
                return new HttpResult(response.getStatusLine().getStatusCode(), EntityUtils.toString(
                        response.getEntity(), "UTF-8"));
            }
            return new HttpResult(response.getStatusLine().getStatusCode(), null);
        } finally {
            if (response != null) {
                response.close();
            }
        }
    }
 
}
 

 

 

@Controller
@RequestMapping("popularize")
public class PopularizeController {
/**
     * 查询今天这个号码申请的次数 ,如果>=3次,则申请失败,否则申请成功,保存申请信息
     * @param url    前台js访问后台的url
     * @param applyinfo
     * @return    JSON格式的HashMap<String,Object>
     */
     @RequestMapping("insertByCountLessThanThree")
     @ResponseBody
    public ResponseEntity<HashMap<String,Object>> save(Applyinfo applyinfo){
        HashMap<String,Object> map = new HashMap<String,Object>();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
        String result = "";
        try {
            /* 查询今天这个号码申请的次数 */
            int count = applyinfoService.queryCountByPhoneAndDate(applyinfo.getCELLPHONE(),df.format(new Date()));    
            if(count>=3){
                result = "fail";
            }else{
                applyinfoService.insertApplyinfo(applyinfo);
                result = "success";
            }
        } catch (Exception e) {
            e.printStackTrace();
            result = "error";
        }
        map.put("result", result);
        if (StringUtils.isEmpty(map)) {
            return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
        }else{
            return ResponseEntity.status(HttpStatus.OK).body(map);
        }
    }
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值