首页 > 其他分享 >基于Axis 1.4的Web Service入门

基于Axis 1.4的Web Service入门

时间:2024-09-10 22:35:14浏览次数:11  
标签:1.4 Web http String Service import apache org

最近有个客户使用的是Axis 1.4创建的Web Service,很久没用了,所以整理下这块的知识。

基于JDK 1.8和Eclipse Mars开发一个简单的Hello world Web Service

public interface HelloService {

  String hello(String name);
}

public class HelloServiceImpl implements HelloService{

  @Override
  public String hello(String name) {
    return String.format("%s, 您好",name);
  }

}

右键单击HelloService的实现类,选择Web Services -> Create Web Service, 经过下面的配置后,一路Next基本就可以创建客户端项目了。

常规调用方式1:

private HelloServiceImplProxy helloServiceImplProxy = new HelloServiceImplProxy();

String helloTerry = helloServiceImplProxy.hello("程英华的博客");

其他方式:以使用HttpClient为例,这里的重点不是请求方式,而是工具SOAP UI 让我们快速的基于wsdl来创建请求,查看响应。这个工具是本人认为是其他方式的重点。

StringBuilder params = new StringBuilder();
params.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:impl=\"http://impl.soap.hello.penguin.org\">\n" +
" <soapenv:Header/>\n" +
" <soapenv:Body>\n" +
" <impl:hello>\n" +
" <impl:name>兰博</impl:name>\n" +
" </impl:hello>\n" +
" </soapenv:Body>\n" +
"</soapenv:Envelope>");

WebServiceClientUtil webServiceClientUtil = new WebServiceClientUtil();
Result<?> result= webServiceClientUtil.createOaSoap(params.toString());


WebServiceClientUtil.java

 1 package org.penguin.hello.util;
 2 
 3 import java.io.IOException;
 4 import java.util.ArrayList;
 5 import java.util.List;
 6 
 7 import org.apache.http.client.config.RequestConfig;
 8 import org.apache.http.client.methods.HttpPost;
 9 import org.apache.http.Header;
10 
11 import org.apache.http.message.BasicHeader;
12 import org.apache.http.impl.client.CloseableHttpClient;
13 import org.apache.http.impl.client.HttpClients;
14 import org.penguin.hello.vo.Result;
15 import org.apache.http.HttpResponse;
16 import org.apache.http.entity.StringEntity;
17 import org.apache.http.util.EntityUtils;
18 import org.dom4j.Document;
19 import org.dom4j.DocumentHelper;
20 import org.dom4j.tree.DefaultElement;
21 
22 import java.nio.charset.StandardCharsets;
23 
24 public class WebServiceClientUtil {
25     /**
26      * Web Service地址
27      */
28     private static final String URL = "http://localhost:8080/helloAxis1/services/HelloServiceImpl";
29 
30     /**
31      * 调用Web Service
32      *
33      * @param params
34      * @return
35      */
36     public static Result<?> createOaSoap(String params) {
37         Result<String> result = Result.ok();
38         // 创建HttpClient实例
39         CloseableHttpClient httpClient = HttpClients.createDefault();
40         // 创建HttpPost实例
41         HttpPost httpPost = new HttpPost(URL);
42         // 连接超时时间,单位:毫秒
43         int connectTimeout = 5000;
44         // 读取超时时间,单位:毫秒
45         int socketTimeout = 5000;
46         RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(connectTimeout)
47                 .setSocketTimeout(socketTimeout).build();
48         httpPost.setConfig(requestConfig);
49         // 设置请求头部
50         List<Header> headers = new ArrayList<>();
51         headers.add(new BasicHeader("SOAPAction", "http://impl.soap.hello.penguin.org/HelloServiceImpl/helloRequest"));
52         httpPost.setHeaders(headers.toArray(new Header[0]));
53         // 设置请求体
54         StringEntity requestEntity = new StringEntity(params, StandardCharsets.UTF_8);
55         requestEntity.setContentType("text/xml");
56         httpPost.setEntity(requestEntity);
57         try {
58             // 执行请求并获得响应
59             HttpResponse response = httpClient.execute(httpPost);
60             // 打印响应状态
61             int statusCode = response.getStatusLine().getStatusCode();
62             // 获取响应内容
63             String responseBody = EntityUtils.toString(response.getEntity());
64             String message = null;
65             String responseString;
66             try {
67                 Document document = DocumentHelper.parseText(responseBody);
68                 responseString = ((DefaultElement) ((DefaultElement) document.content().get(0)).content().get(3))
69                         .element("helloResponse").element("helloReturn").getText();
70                 message = responseString;
71                 result.setResult(message);
72             } catch (Exception e) {
73                 e.printStackTrace();
74                 statusCode = 400;
75                 message = e.getMessage();
76             }
77             result.setCode(statusCode);
78             result.setMessage(message);
79         } catch (Exception e) {
80             result.setCode(400);
81             result.setMessage(e.getMessage());
82             e.printStackTrace();
83         } finally {
84             try {
85                 // 关闭HttpClient连接
86                 httpClient.close();
87             } catch (IOException e) {
88                 e.printStackTrace();
89             }
90         }
91         return result;
92     }
93 }

 

标签:1.4,Web,http,String,Service,import,apache,org
From: https://www.cnblogs.com/terry-cc/p/18407384

相关文章

  • 【待做】【JavaWeb】HTTP、Tomcat、Servlet
    一、JavaWeb框架及HTTP介绍二、IDEA+Tomcat集成快速构建JavaWeb项目2.1快速构建JavaWeb项目2.2IDEA集成本地Tomcat2.3IDEA配置Tomcat的Maven插件2.4项目打包后的目录结构三、Servlet执行流程及生命周期介绍3.1Servlet介绍及写个接口3.2Se......
  • 【Azure Service Bus】创建 ServiceBus 的Terraform脚本报错GetAuthorizationRule: In
    问题描述在使用Terraform部署ServiceBus时候,遇见了如下报错:Error:ErrormakingReadrequestonAzureServiceBusTopicAuthorizationRule:servicebus.TopicsClient#GetAuthorizationRule:Invalidinput:autorest/validation:validationfailed:parameter=authorization......
  • 【Azure Service Bus】创建 ServiceBus 的Terraform脚本报错GetAuthorizationRule: In
    问题描述在使用Terraform部署ServiceBus时候,遇见了如下报错:Error:ErrormakingReadrequestonAzureServiceBusTopicAuthorizationRule:servicebus.TopicsClient#GetAuthorizationRule:Invalidinput:autorest/validation:validationfailed:parameter=authorizat......
  • 基于Java web社区公共安全管理系统(源码+lw+部署文档+讲解等)
    文章目录前言......
  • JavaWeb开发01 - HTML+CSS
    浏览器内核对前端代码进行渲染解析,为确保解析效果一直制定web标准。Web标准也称为网页标准,由一系列的标准组成,大部分由W3C(WorldWideWebConsortium,万维网联盟)负责制定。由三个组成部分:HTML:负责网页的结构(页面元素和内容)。CSS:负责网页的表现(页面元素的外观、位置等页面样式......
  • JavaWeb案例-登录认证
    在前面的文章中,我们复习了部门管理、员工管理的基本功能。但是我们并没有登录,就直接访问到了Tilias智能辅助系统的后台。这是不安全的,所以今天复习登录认证。最终实现的效果就是用户必须登录之后,才可以访问后台系统中的功能。 1.登录功能 1.1需求在登录界面中,我们可以输......
  • 高等数学 1.4无穷小与无穷大
    目录一、无穷小二、无穷大一、无穷小定义:如果函数\(f(x)\)当\(x\tox_0\)(或\(x\to\infty\))时的极限为零,那么称函数\(f(x)\)为当\(x\tox_0\)(或\(x\to\infty\))时的无穷小.特别地,以零为极限的数列\(\{x_n\}\)称为\(n\to\infty\)时的无穷小。注意:不要把......
  • lnmp架构发布多个web服务
    在一台服务器上发布多个网页准备环境lnmp安装lnmp将本地的/etc/yum.repos.d/下的yum源mv移动到/tmp[root@node13~]#cd/etc/yum.repos.d/[[email protected]]#lsCentOS-Base.repo epel.repo[[email protected]]#mv*/tmp拷贝软件包使用 yum-......
  • websocket协议与http协议
    WebSocket协议和HTTP协议都是用于网络通信的协议,但它们在设计目标、通信方式和应用场景上有一些关键的区别。以下是它们的主要区别:1.设计目标HTTP:设计目标:HTTP旨在为万维网提供一种标准化的请求/响应机制,允许客户端和服务器之间进行数据交换。它是无状态的,每个请求都......
  • Weblogic 12c 12.2.1.10SPB 补丁文件 以及补丁升级
            最近公司项目上新接手了一个weblogic12的运维项目,小版本号码为12.2.1.1.0。为了安全稳定性,决定升级最新版补丁文件。   从oracle官网下载补丁(个人账户无法查看补丁以及下载),解压文件后发现目录文件与之前的补丁文件格式不一样,是一个SPB的补丁List。结构......