webservice注解接口调用,怎么调用webservice接口
webservice注解接口调用,怎么调用webservice接口详细介绍
本文目录一览: 如何调用webservice接口
webservice主要是一些站点为我们写好了的方法,供我们调用,当然我们也可以自己去编写自己的webservice, 所以你首先得找到这样的接口。看一些站点有没有这样的接口。
下面我们就拿一个简单的天气预报接口。先把天气预报接口的地址输入地址栏: ( http://webservice。36wu。com/weatherService.asmx 这个是例子,实际中根据个人需要修改)
会出现一些带有链接的方法名和参数说明之类的。看完之后,然后进链接可以看到测试,可以先把我们想测试的参数写进去,点击调用,会出现一个xml文件,这些就是得到的结果,依情况而定我们出把结果处理成我们想要的就可以了。
下面说一下怎么在项目中调用:新建一个web项目,然后点击添加引用服务如图,然后点击确定。
这样就会发现在webconfig文件里面多了一下节点,而且项目类中的Service References文件件多了一个绿色的东西。可以点击看看他有哪些方法,应该是和我们在浏览器输入链接的方法是一致的,剩余就是怎么调用了。下面给出具体的代码:本代码值在webForm中先添加Lable、TextBox、Button以及Literal各一个。然后点击按钮。
protected void Button1_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(this.TextBox1.Text))
{
WeatherService.WeatherWebServiceSoapClient service = new WeatherService.WeatherWebServiceSoapClient();
String[] strWeatherInfo = service.getWeatherbyCityName(this.TextBox1.Text);
StringBuilder str = new StringBuilder("");
str.AppendLine("您查看天气信息如下:");
foreach (string info in strWeatherInfo)
{
str.AppendLine(info+"
");
}
this.Literal1.Text =str.ToString();
}
}
运行程序, 就看到效果了。
怎么调用webservice接口
无法读取服务器。
你需要确认以下。
AuthPassword 端点认证用的口令。
AuthUser 端点认证用的用户名。
EndPointURL 端点的URL。
ProxyPassword 代理认证的口令。
ProxyPort 代理服务器使用的端口。
ProxyServer 代理服务器的主机名或IP地址。
ProxyUser 代理认证的用户名。
SoapAction HTTP头部中SoapAction中的值。
这一属性只能从低级的API中设定,如果使用SoapClient接口中的ConnectorProperty属性(高级API)设置该属性,它就会被忽略。
SSLClientCertificateName 如果存在,则该字符串标明用于SSL协议中的客户端证书。
其语法为: SSLClientCertificateName [CURRENT_USER | LOCAL_MACHINE\[store-name\]]证书名,其缺省的名字为 CURRENT_USER\MY。
看看这里面的 ,你应该就明白了
http://blog.csdn.net/chenghui0317/article/details/9320053
你把webservice理解成一个网站,不过网址是带参数的就可以了啊!
比如我的WEBservice发布后的默认起始页是MyWebservice.asmx
访问的话就是http://192.168.1.155::85//MyWebservice.asmx就可以了啊,如果要调用里面的方法就是问号方法名就可以了!
使用什么注解可以声明webservice业务接口
什么框架、什么环境
~~~~~~~~
Web Service 元数据注释(JSR 181)
@WebService
1、serviceName: 对外发布的服务名,指定 Web Service 的服务名称:wsdl:service。缺省值为 Java 类的简单名称 + Service。(字符串)
2、endpointInterface: 服务接口全路径, 指定做SEI(Service EndPoint Interface)服务端点接口
3、name:此属性的值包含XML Web Service的名称。在默认情况下,该值是实现XML Web Service的类的名称,wsdl:portType 的名称。缺省值为 Java 类或接口的非限定名称。(字符串
4、portName: wsdl:portName。缺省值为 WebService.name+Port。
5、targetNamespace:指定你想要的名称空间,认是使用接口实现类的包名的反缀
6、wsdlLocation:指定用于定义 Web Service 的 WSDL 文档的 Web 地址。Web 地址可以是相对路径或绝对路径。(字符串)
注意:实现类上可以不添加Webservice注解
@WebMethod
注释表示作为一项 Web Service 操作的方法,将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于 JavaBeans 端点的服务器端点实现类。
要点:
仅支持在使用 @WebService 注释来注释的类上使用 @WebMethod 注释
1、operationName:指定与此方法相匹配的wsdl:operation 的名称。缺省值为 Java 方法的名称。(字符串)
2、action:定义此操作的行为。对于 SOAP 绑定,此值将确定 SOAPAction 头的值。缺省值为 Java 方法的名称。(字符串)
3、exclude:指定是否从 Web Service 中排除某一方法。缺省值为 false。(布尔值)
@Oneway
注释将一个方法表示为只有输入消息而没有输出消息的 Web Service 单向操作。
将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于 JavaBeans 端点的服务器端点实现类
@WebParam
注释用于定制从单个参数至 Web Service 消息部件和 XML 元素的映射。
将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于 JavaBeans 端点的服务器端点实现类。
1、name :参数的名称。如果操作是远程过程调用(RPC)类型并且未指定partName 属性,那么这是用于表示参数的 wsdl:part 属性的名称。
如果操作是文档类型或者参数映射至某个头,那么 -name 是用于表示该参数的 XML 元素的局部名称。如果操作是文档类型、
参数类型为 BARE 并且方式为 OUT 或 INOUT,那么必须指定此属性。(字符串)
2、partName:定义用于表示此参数的 wsdl:part属性的名称。仅当操作类型为 RPC 或者操作是文档类型并且参数类型为BARE 时才使用此参数。(字符串)
3、targetNamespace:指定参数的 XML 元素的 XML 名称空间。当属性映射至 XML 元素时,仅应用于文档绑定。缺省值为 Web Service 的 targetNamespace。(字符串)
4、mode:此值表示此方法的参数流的方向。有效值为 IN、INOUT 和 OUT。(字符串)
5、header:指定参数是在消息头还是消息体中。缺省值为 false。(布尔值)
@WebResult
注释用于定制从返回值至 WSDL 部件或 XML 元素的映射。将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于 JavaBeans 端点的服务器端点实现类。
1、name:当返回值列示在 WSDL 文件中并且在连接上的消息中找到该返回值时,指定该返回值的名称。对于 RPC 绑定,这是用于表示返回值的 wsdl:part属性的名称。对于文档绑定,-name参数是用于表示返回值的 XML 元素的局部名。对于 RPC 和 DOCUMENT/WRAPPED 绑定,缺省值为 return。对于 DOCUMENT/BARE 绑定,缺省值为方法名 + Response。(字符串)
2、targetNamespace:指定返回值的 XML 名称空间。仅当操作类型为 RPC 或者操作是文档类型并且参数类型为 BARE 时才使用此参数。(字符串)
3、header:指定头中是否附带结果。缺省值为false。(布尔值)
4、partName:指定 RPC 或 DOCUMENT/BARE 操作的结果的部件名称。缺省值为@WebResult.name。(字符串)
@HandlerChain
注释用于使 Web Service 与外部定义的处理程序链相关联。只能通过对 SEI 或实现类使用 @HandlerChain 注释来配置服务器端的处理程序。
但是可以使用多种方法来配置客户端的处理程序。可以通过对生成的服务类或者 SEI 使用 @HandlerChain 注释来配置客户端的处理程序。此外,可以按程序在服务上注册您自己的 HandlerResolver 接口实现,或者按程序在绑定对象上设置处理程序链。
1、file:指定处理程序链文件所在的位置。文件位置可以是采用外部格式的绝对 java.net.URL,也可以是类文件中的相对路径。(字符串)
2、name:指定配置文件中处理程序链的名称。
来源:http://yufenfei.iteye.com/blog/1685249
cxf 调用webservice 时两句注解的意思
WebMethod(action="getBasicBpResult",operationName="getBasicBpResult")
请求名+方法名
WebResult(name="BpResult")
返回值
通过注释系统会自动是被方法和返回类型。以便传输数据
SpringBoot Spring Cloud 整合cxf开发webService接口服务端-流程步骤
Apache CXF 是一个开源的 Service 框架,简化用户的 service 开发,基于CXF开发的应用可提供 SOAP 、 XML/HTTP 、 RESTFUL HTTP 或 CORBA 等服务。 CXF 底层页可以使用不同的传输协议,包括 HTTP 、 JMS 或 JBI 等。
自定义注解标注要发布的服务类,发布出去
在接口上添加 @WebService 注解
通过浏览器访问wsdl,wsdl路径即为发布的路径加上?wsdl
http://127.0.0.1:[端口号]/cxf/test?wsdl
可以看到接口就成功了。
到此服务端开发结束!
如果是soapui工具,发送的参数包括xml的:将xml写在 【xml】 里面
CXF方式搭建本地webservice服务和soap方式调用踩坑
说明:本文章记录的是基于springboot搭建的cxf服务端和soap客户端调用
说明:目前我使用到了四个注解,分别是
@WebService:表明该接口是一个webservice服务接口,注解里的属性值可以设置生成的wsdl文档的命名空间等信息,此处没有遇到相关错误,因此没有进行设置,不过建议还是设置上。
@WebMethod:表明该方法是服务要发布的方法,对应属性也可以设置上
@WebResult:设置方法返回值,此处最开始没有设置导致获取不到返回值,因此务必设置上
@WebParam:设置参数信息,指定参数名字和参数所属命名空间,必须设置,不然可能导致参数不能传递进来
说明:实现类上需要贴上注解,方法不需要
说在前头:这里我只是实验了拦截器的定义,没有什么具体的业务操作,想学习的同学请自行研究
此时启动boot项目就可以访问到wsdl文档
第一个就是请求参数无法传递进去,解决办法是设置@WebParam注解的targetNamespace属性值
这个主要就是报非法属性异常
第二个就是无法获取到返回值,解决办法就是需要添加@WebResult注解并设置对应的属性值
这个主要就是在客户端获取返回值哪里报空指针异常
springboot项目调用webservice客户端 问题
@Configurationpublic class CorsConfig { private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.addAllowedOrigin("*");corsConfiguration.addAllowedHeader("*");corsConfiguration.addAllowedMethod("*"); return corsConfiguration;} @Beanpublic CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**", buildConfig()); return new CorsFilter(source);} }1-新建配置文件,添加Configuration注解 2-测试跨域请求通过,至此已完美解决ajax跨域问题,是不是很easy,小伙伴儿们快去试试把!!!
jdk11后不支持webservice问题解决方案
在调用webservice服务时,接口中会要求传递 xml 字符串,需要我们进行 实体类 --> xml字符串 之间的互转, 这个互转的程序,通常是使用 jdk8 中提供的一个 JAXB 库, 但是这个库在jdk11时已经彻底删除掉了,在打包放到服务器上运行时,在运行到这一行时,就会报错:
错误图片:
网上大多数让自己引入JAXB的包,经过测试发现引入后本地运行是可以的,但是打包后,在服务器中运行还是会报以上错误
由于网上的方法已经尝试过,在服务器中运行还是会报错,所以我们就直接弃用此JAXB,用第三方的互转工具来做Bean和xml的互相转换,这里推荐使用 Xstream 2.1 maven地址
com.thoughtworks.xstream
xstream
1.4.17
XStream 是一个简单的库,用于将对象序列化为 XML 并再次序列化。 官网: http://x-stream.github.io/ 快速入门: http://t.csdn.cn/VkGIf 在调用webservice接口的地方 , 使用XStream,来代替JAXB进行实体类与xml之间的互转即可 注意: 使用XStream,需要配合其提供的注解来标记实体类属性,再进行转换 例如:
为什么cxf webservice接口类和实现类放在同一包下和不同包下,访问路劲得到的xml不一样
如果是注解实现的...我也只知道注解实现的,把@webservice的注解,以及对targetnamespace的配置什么的,都放在接口类,同时保持这些配置和同一包时一样,得到的xml就一样了。实现类不需要webservice注解
不同的框架只要实现了JAX-WS,就是标准的ws框架了....很巧的是,我正好做了这样的试验,已经验证过了...cxf作为服务器生成web Service, 在客户端用axis2,调用cxf的接口