WebService案例实例

WebService案例实例

前言:

由于工作需要,写一个接口,返回xml信息。供其他服务调用

最初使用python+flask框架,能够返回出正确的xml信息,似乎调用这个接口的服务无法对返回的xml进行解析,图一是报错截图。(开发说是协议问题)如果有知道的小伙伴可以给我留言!

Caused by: org.xml.sax.SAXException: Bad envelope tag: envelope 错误问题

图1

转战使用Java语言开发

笔者之前未使用过Java,也是通过网上查找一些相关材料,最后写出这个简单的案例

准备工具:

1.下载 jdk,我用的1.8.0

2.安装 Java编译器,我用的Intellij IDEA 专业版

下面是正文

1.首先创建一个web项目来用做服务端,创建项目Java-WebServices。如果是社区版可能没有这个选项

在这里插入图片描述

在这里插入图片描述

项目中一共3个.java文件 接口与类一目了然 Login4AServices是一个发布类只有一个main方法

2.直接上代码:

Login4AServicesInterface.java

package com.webservice.server;

public interface Login4AServicesInterface {
}

Webcontextlistener.java

package com.web;

import com.webservice.server.Login4AServices;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.xml.ws.Endpoint;

//通过用ServletContextListener发布
public class Webcontextlistener implements ServletContextListener {
    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        //用endpoint发布webservice
        Endpoint.publish("http://127.0.0.1:8146/uac/services/CheckAiuapTokenSoap", new Login4AServices());
        System.out.println("通过servletcontextlistener部署webservice成功");
    }

}

Login4AServices.java

package com.webservice.server;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService(targetNamespace = "http://127.0.0.1:8146/uac/services/CheckAiuapTokenSoap")
public class Login4AServices implements Login4AServicesInterface {

    @WebMethod(action = "CheckAiuapTokenSoap")
    public String CheckAiuapTokenSoap(String info) {
        String xml = "<?xml version='1.0' encoding='UTF-8'?><USERRSP><HEAD><CODE>000</CODE><SID>000</SID><TIMESTAMP>20201221082621</TIMESTAMP><SERVICEID>CQYGPT</SERVICEID></HEAD><BODY><RSP>0</RSP><APPACCTID>aaa</APPACCTID><MAINACCTID>10007308</MAINACCTID></BODY></USERRSP>";
        System.out.println("from client..." + " info :" + info);
        return xml;
    }

    public static void main(String[] args) {
        //java jdk提供一个自带的类可以将java应用程序发布成webservice
        /**
         * Endpoint.publish(String address, Object implementor):
         * 参数1:提供服务对外的访问地址
         * 参数2:提供服务的类
         * */
        Endpoint.publish("http://127.0.0.1:8146/uac/services/CheckAiuapTokenSoap", new Login4AServices());
        System.out.println(" 发布成功 ...");
    }
}

4.执行Login4AServices.java文件就是发布

发布的时候需要确保端口号没有被占用
附上查看端口是否被占用命令:netstat -ano | findstr "port"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yu1GwE8d-1609404697154)(E:\交接文件\image-20201231161825717.png)]

5.测试一下

我们使用上面的URL地址访问下

http://localhost:8146/uac/services/CheckAiuapTokenSoap?wsdl (一定要加上?wsdl)

在这里插入图片描述

用Java写的webservice接口就解决了前言中的工作问题,使用flask框架的却不行。。。。
依葫芦画瓢… 先记录下来,再作补充。

附上另外一篇项目实例,用python+flask框架
flask-web项目实例(二),设置响应消息为xml格式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值