基于 org.apache.http.client 访问restful接口——待整理

原创 2018年04月15日 23:45:09

    背景:发送消息给微信系统的controller方法。具体发送消息由项目的微信模块实现。微信模块调用微信接口实现。

参考资料:

具体的简单实现

https://www.cnblogs.com/sharpest/p/6406013.html

待整理

可以看到具体实现时,修改了原有的httpClient改为由HttpConnectionManager生成的HttpClient,具体原因尚未不知。可参考

https://blog.csdn.net/xiaoxian8023/article/details/49865335

https://blog.csdn.net/xiaoxian8023/article/details/49619777

访问微信的controller

    /**
     *  发送微信消息
     * @param url  restFul地址 微信地址
     * @param templateContent 消息内容
     * @param memberId    用户ID
     * @return
     * @throws BizException
     */
    private String sendWechatMessage(String url, String templateContent, Long memberId) throws BizException {
        //sendMessage实体为restful接口的实体
        try {
            SendMessage sendMessage = new SendMessage();
            sendMessage.setContent(templateContent);
            sendMessage.setMemberId(memberId);

            StringEntity se = new StringEntity(JSON.toJSONString(sendMessage));
            se.setContentType("text/json");
            se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json"));
            String result = "200";
            //POST的URL
            HttpPost httppost = new HttpPost(url);
            //建立HttpPost对象
            httppost.setEntity(se);
            httppost.addHeader(HTTP.CONTENT_TYPE, "application/json");
            HttpResponse response = httpConnectionManager.getHttpClient().execute(httppost);
            //发送Post,并返回一个HttpResponse对象
            if (response.getStatusLine().getStatusCode() == 200) {//如果状态码为200,就是正常返回
                result = EntityUtils.toString(response.getEntity());
                return result;
            } else {
                throw new BizException("http请求异常:" + response.getStatusLine().getStatusCode());
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            throw new BizException("字符编码不支持!");
        } catch (IOException e) {
            e.printStackTrace();
            throw new BizException("数据读写失败!");
        }
    }

@Component
public class HttpConnectionManager {
    private PoolingHttpClientConnectionManager cm = null;

    public HttpConnectionManager() {
    }

    @PostConstruct
    public void init() {
        SSLConnectionSocketFactory sslsf = null;

        try {
            sslsf = new SSLConnectionSocketFactory(SSLContext.getDefault());
        } catch (NoSuchAlgorithmException var3) {
            var3.printStackTrace();
        }

        Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.create().register("https", sslsf).register("http", new PlainConnectionSocketFactory()).build();
        this.cm = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
        this.cm.setMaxTotal(200);
        this.cm.setDefaultMaxPerRoute(20);
    }

    public CloseableHttpClient getHttpClient() {
        CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(this.cm).build();
        return httpClient;
    }

简单的restFule接口 ,注意sendMessage实体,必须和上面的实体一致。

    @ResponseBody
    @RequestMapping(value = UrlMapping.NOTIFICATION, method = RequestMethod.POST)
    public Result notification(@RequestBody SendMessage sendMessage) {
        Result res = new Result();




版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wgp15732622312/article/details/79955086

基于Restful接口的网络API接口调用方法

java原生方式调用API1) 我们会使用fastjson解析json数据,会导入alibaba的fastjson依赖包: com.alibaba fastjson 1.2.4...
  • qq_34325640
  • qq_34325640
  • 2017-11-22 19:35:56
  • 564

Restful 规范

参考资料:RESTful API 设计指南
  • qq_kbyd
  • qq_kbyd
  • 2018-03-01 13:09:24
  • 16

Restful接口访问工具

package com.lvtu.utils.restful; import java.text.MessageFormat; import java.util.HashMap; impor...
  • jakeswang
  • jakeswang
  • 2016-09-07 20:20:52
  • 413

HttpClient访问后台服务的Restful(各种方式访问)

  • 2016年04月05日 16:49
  • 18KB
  • 下载

SpringBoot-创建RESTful风格的 http接口访问jpa 来操作数据库

1.开发工具IDE:Intellij Idea,数据库mysql(SpringBoot,创建RESTful 接口很方便,只要建立好数据模型,然后创建一个模型仓库接口就ok了)2.开始开发2.1项目目录...
  • r8l8q8
  • r8l8q8
  • 2017-08-04 20:41:02
  • 1617

如何在chrome浏览器利用postman应用进行restful api接口请求测试

转自:http://jingyan.baidu.com/article/90808022ff18defd91c80f9a.html 在web和移动端开发时,常常会调用服务器端的restful接口...
  • sevenquan
  • sevenquan
  • 2016-04-15 12:36:03
  • 1751

记mvc:resources配置和后台restful接口访问问题

搭建springmvc的框架,期间遇到一个非常奇怪的问题(spring版本是3.1.2): 问题描述: 浏览器地址栏输入http://localhost:8080/Spring_2500_Regi...
  • u014447371
  • u014447371
  • 2016-06-30 15:46:18
  • 629

【Restful接口】restful接口的两种使用方式

小编最近的项目是好几个团队的一块合作,由于项目大,功能多,各个团队负责的东西不同,我的团队除了自己的开发前端和后端外,还负责给别的团队提供后端支持,在这里就用上了restful接口.         ...
  • u013086062
  • u013086062
  • 2016-10-31 23:31:45
  • 24290

Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】

本篇,我将结合创建用户这个接口,利用三种调用方式进行不同的创建测试
  • Appleyk
  • Appleyk
  • 2017-12-22 11:09:27
  • 1221

Java 调用Restful API接口的几种方式--HTTPS

摘要:最近有一个需求,为客户提供一些Restful API 接口,QA使用postman进行测试,但是postman的测试接口与java调用的相似但并不相同,于是想自己写一个程序去测试Restful ...
  • zpf336
  • zpf336
  • 2017-06-20 10:29:37
  • 16554
收藏助手
不良信息举报
您举报文章:基于 org.apache.http.client 访问restful接口——待整理
举报原因:
原因补充:

(最多只允许输入30个字)