.net webservice怎么接收post过来的json_webService入门笔记

最近由于工作上需要,所以去学习了一下webService技术,在这里做一下记录,以防下次忘记o(╯□╰)o

1.webService是什么:简单点来说,就是一种可以远程调用接口的技术.两个项目之间通过固定的webService接口协议实现跨系统数据交互.比如可以用于获取天气预报,手机归属地查询等等.

2.webService 该如何使用: 有如下几种使用方式:

2.1基于jdk方式发布webService服务

2.2 基于apache.cxf框架发布ws风格的webService服务

2.3基于apache.cxf框架发布基于restful风格的webService服务

2.4基于系统接口,发布json数据格式的restful风格的接口(不是严格意义上的webService接口,因为只是项目里一个普通接口,但可以被其他项目调用)

在restful风格的webService出现之前,webService代码的编写都是十分繁琐的,而restful风格的webService接口虽然简单,和普通controller里写接口的方式差不多,但如果能直接将controller里的接口交于其他项目调用,那又何必费心费力的再编写个webService接口,只是增加不必要的麻烦罢了.

下面会具体介绍几种常用的webService接口编写方式,用来应付开发应该是没问题的了,编写接口之前需要了解的前置知识,,,webService的几种协议,,例如soap协议,rest协议,这两种协议区别我也没理解,有懂的朋友可以告诉我一下哦,2.--1;2;都是基于soap协议,2.3基于rest协议..2.4属于普通接口但也是restful风格的.

1.jdk方式生成服务端和客户端

import 

生成客户端方式有两种 1是通过jdk自带的命令 wsimport -s 生成代码路径 webService接口URL ,这种方式不推荐,bug多,而且还会有编码格式问题

2是通过apache.cxf框架命令 wsdl2java -d 生成代码路径 webService接口URL这种方式推荐,但需要下载apache.cxf的jar包,下载地址:

Index of /dist/cxf/3.0.16​archive.apache.org

使用以上两种命令都需要配置环境变量,类似于jdk环境变量配置,但wsimport命令是jdk原生的,所以你若提前配置好jdk环境变量,那么可以在cmd窗口直接使用 ,,cxf环境变量配置如下:

WebService生成客户端代码的两种方式: wsdl2java 、eclipse_axis​blog.csdn.net
ffbd2550b81ba725e4b56a036f031496.png

使用以上命令生成的文件都是相同的,具体不再讲述

WebService客户端几种实现方式_Java开发-CSDN博客​blog.csdn.net
03774c57adc9314251d888896dc8fd90.png

不过这里需要注意的是使用jdk原生方式就不能再项目里集成apache.cxf框架了,不然各种异常错误搞到你怀疑人生

3.基于restful风格的webService生成服务端:,使用的东西都是apache.cxf里的,很简单粗暴,写法类似于controller里编写接口;发布方式如下

JAXRSServerFactoryBean jaxrsServerFactoryBean = new JAXRSServerFactoryBean();jaxrsServerFactoryBean.setServiceBean(new HelloServiceImpl());//具体的服务beanjaxrsServerFactoryBean.setAddress("http://localhost:8080/hello");//设置地址jaxrsServerFactoryBean.create().start();//启动
logger.info("发布成功");

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.io.File;

@Path("/hello")
@Produces("*/*")//规范传递的数据类型
public interface HelloService {
    @POST//请求方式
    @Path("/hello/")//请求地址
    @Consumes({MediaType.APPLICATION_XML})// 服务器接受的请求类型
    public boolean hello(@QueryParam("name") String name,File file);

    @POST
    @Path("/getFile")
    @Consumes({"application/xml"})
    public void getFile(File file);
}

这里就不讲解怎么把cxf框架和spring进行集成,反正也不是太难.以上需要引入的pom依赖如下

<!-- cxf 进行rs开发 必须导入 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>3.0.1</version>
</dependency>
<!-- 客户端 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-client</artifactId>
<version>3.0.1</version>
</dependency>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值