java对接webservice服务实现推送

简介: 前不久接到一个任务需要将我们平台的内容推送到第三方的一个webService服务中,我们平台接口使用java来做的,所以需要通过java调用webService服务实现推送效果,不多说直接上干货。

【背景】


   前不久接到一个任务需要将我们平台的内容推送到第三方的一个webService服务中,我们平台接口使用java来做的,所以需要通过java调用webService服务实现推送效果,不多说直接上干货。


【过程】


第一步:查看要推送过去的webservice服务的接口:


20190227214308869.png


第二步:可以先通过SoapUI 5.2.1或者其它工具进行测试验证(切记需要输入对应的参数),如下图:


20190227214308893.png


第三步:通过java代码拼接参数(拼接为类似于SoapUI参数的方式,的一个String字符串,切记将对应参数放入其中哦),如下图:


20190227214308933.png


第四步:通过http请求调用,但是必须用下面的方法进行调用(其中下面的StringRequestEntity对应的第二个参数contentType类型需要和图一中的数据第三行,content-Type类型对应才可以调用通),如下图:


20190227214308935.png


第五步:进行测试验证工作


【代码】


  只提供一下http请求方法对应的代码,至于调用的时候传入的拼接参数的方法读者可以自己写一下。


public static String sendPostForWebService(String requestUrl, String paramStr) {
    if (requestUrl == null || "".equals(requestUrl)) {
      logger.error("请求地址为null");
      return null;
    }
    if (null == paramStr) {
      logger.error("请求参数为null");
      return null;
    }
    StringRequestEntity requestEntity = null;
    try {
//      requestEntity = new StringRequestEntity(paramStr, "application/soap+xml",CODE);
      requestEntity = new StringRequestEntity(paramStr, "text/xml",CODE);
    } catch (UnsupportedEncodingException e) {
      logger.error(e.getMessage());
    }
    PostMethod postMethod = new PostMethod(requestUrl);
    postMethod.setRequestEntity(requestEntity);
    HttpClient httpClient = new HttpClient();
    /* 发送请求,并获取响应对象 */
    int statusCode = -1;
    try {
      statusCode = httpClient.executeMethod(postMethod);
    } catch (HttpException e) {
      logger.error(e.getMessage());
    } catch (IOException e) {
      logger.error(e.getMessage());
    }
    if (statusCode != HttpStatus.SC_OK) {
      logger.error("post请求失败: " + postMethod.getStatusLine());
      return null;
    }
    String resultJson = "";
    try {
      InputStream io = postMethod.getResponseBodyAsStream();
      resultJson = inputStream2String(io);
      logger.info("请求结果 : " + resultJson);
    } catch (IOException e) {
      logger.error("获取ResponseBody时出错:" + e.getMessage());
    }
    return resultJson;
  }


【遇到的困难】


   1.开始不知道如何进行推送,也不知道如何验证,所以查询过后找到了SoapUI 5.2.1这个工具,工具读者朋友直接百度吧!


   2.通过java调用StringRequestEntity中的第二个参数也就是请求的contentType不对应一直调用不通


【总结】


   开始做的时候一头雾水,各种查询,各种尝试,最终解决完成之后发现是如此简单,欢迎读者朋友交流沟通。

相关文章
|
17天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
3月前
|
Java Maven Windows
使用Java创建集成JACOB的HTTP服务
本文介绍了如何在Java中创建一个集成JACOB的HTTP服务,使Java应用能够调用Windows的COM组件。文章详细讲解了环境配置、动态加载JACOB DLL、创建HTTP服务器、实现IP白名单及处理HTTP请求的具体步骤,帮助读者实现Java应用与Windows系统的交互。作者拥有23年编程经验,文章来源于稀土掘金。著作权归作者所有,商业转载需授权。
使用Java创建集成JACOB的HTTP服务
|
2月前
|
JSON Java fastjson
Java Http 接口对接太繁琐?试试 UniHttp 框架吧
UniHttp 是一个声明式的 HTTP 接口对接框架,旨在简化第三方 HTTP 接口的调用过程。通过注解配置,开发者可以像调用本地方法一样发起 HTTP 请求,无需关注请求的构建和响应处理细节。框架支持多种请求方式和参数类型,提供灵活的生命周期钩子以满足复杂的对接需求,适用于企业级项目的快速开发和维护。GitHub 地址:[UniAPI](https://github.com/burukeYou/UniAPI)。
|
2月前
|
前端开发 Java API
JAVA Web 服务及底层框架原理
【10月更文挑战第1天】Java Web 服务是基于 Java 编程语言用于开发分布式网络应用程序的一种技术。它通常运行在 Web 服务器上,并通过 HTTP 协议与客户端进行通信。
26 1
|
2月前
|
Java 关系型数据库 MySQL
java控制Windows进程,服务管理器项目
本文介绍了如何使用Java的`Runtime`和`Process`类来控制Windows进程,包括执行命令、读取进程输出和错误流以及等待进程完成,并提供了一个简单的服务管理器项目示例。
39 1
|
3月前
|
JSON Java 数据格式
java调用服务报错400
java调用服务报错400
65 2
|
2月前
|
Java 数据库
基于java的汽车服务管理系统(Car Service Management System)
基于java的汽车服务管理系统(Car Service Management System)
22 0
|
3月前
|
JSON Java 数据格式
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
91 1
|
2月前
|
Java 数据处理 开发者
Java Http 接口对接太繁琐?试试 UniHttp 框架~
【10月更文挑战第10天】在企业级项目开发中,HTTP接口对接是一项常见且重要的任务。传统的编程式HTTP客户端(如HttpClient、Okhttp)虽然功能强大,但往往需要编写大量冗长且复杂的代码,这对于项目的可维护性和可读性都是一个挑战。幸运的是,UniHttp框架的出现为这一问题提供了优雅的解决方案。
77 0
|
3月前
|
Java 数据库连接 数据库
Java服务提供接口(SPI)的设计与应用剖析
Java SPI提供了一种优雅的服务扩展和动态加载机制,使得Java应用程序可以轻松地扩展功能和替换组件。通过合理的设计与应用,SPI可以大大增强Java应用的灵活性和可扩展性。
74 18