文章介绍:
- 1、retrofit 怎么连接webservice
- 2、nginx 怎么解决webservice跨域
- 3、如何在工程中使用axis2部署webservice
- 4、PHP如何调用webservice
- 5、如何搭建基于cxf的webservice服务端
retrofit 怎么连接webservice
如何让你的电脑通过安卓手机上网 (本人用的是三星GT-S5830,USB连接方式) 准备工作: 1.下载手机的usb驱动 2.下载PDANet,软件官网junefabrics/android/index.php, 选择Version 2.45 installer for 32-bit Windows 7/Vista/
nginx 怎么解决webservice跨域
下载Nginx
百度搜索Nginx,找到官网下载,如果是Linux系统,直接输入下面命令即可下载
wget
我们这里使用的是1.8.1版本
安装Nginx
使用tar xvf nginx-1.8.1.tar.gz命令,解压刚下载文件,得到一个nginx-1.8.1目录。
进入nginx-1.8.1,执行./configure --prefix=/usr/local/nginx命令,表示将nginx安装到/usr/local/nginx目录下。
在使用make make install命令正式安装nginx,完成后就可以在/usr/local/nginx目录下看到已经装好的nginx了。
如果安装权限不够,请使用sudo make install命令。
模拟跨域错误
启动Nginx,并在Nginx的html目录下,编写一个ajax.html页面,在里面通过ajax方式请求taobao的ip地址查询api。
在浏览器中访问,然后按F12即可在Console里面看到跨域错误。
下面我们就通过Nginx来解决这种跨域问题。
如何在工程中使用axis2部署webservice
一、新建Web Project,名为“WebServiceDemo”
二、下载axis2-1.5-war.zip包,解压缩
将axis2/WEB-INF/lib 里的jar包拷贝到 WebServiceDemo/WebRoot/WEB-INF/lib/
将axis2.war/axis2-web拷贝至WebServiceDemo/ WebRoot/axis2-web/
axis2需要的JAR包:
三、配置axis2 servlet
打开WebServiceDemo/WebRoot/WEB-INF/web.xml,增加如下配置:
servlet
servlet-nameAxisServlet/servlet-name
servlet-classorg.apache.axis2.transport.http.AxisServlet/servlet-class
load-on-startup1/load-on-startup
/servlet
servlet-mapping
servlet-nameAxisServlet/servlet-name
url-pattern/services/*/url-pattern
/servlet-mapping
四、写一个简单的web服务类
package service;
public class MyService {
public String sayHello(String name) {
return name + "says /"Hello!/"";
}
}
五、配置Web Service.
由于axis2已嵌入到WebServiceDemo项目中,所以web service就不用打包成aar,而是直接在/WEB-INF目录下创建相应的文件夹和services.xml,目录结构如下图:
六、services.xml
?xml version="1.0" encoding="UTF-8"?
service name="fmService" targetNamespace="webservice.sinohuarui.com"
schema schemaNamespace="webservice.sinohuarui.com/xsd/" /
description
my web service
/description
parameter name="ServiceClass"service.MyService/parameter
operation name="sayHello"
messageReceiver class="7aa9-9adb-080d-7e18 org.apache.axis2.rpc.receivers.RPCMessageReceiver" /
/operation
/service
如果一个类具有多个webservice方法的时候,使用serviceGroup进行配置:
?xml version="1.0" encoding="UTF-8"?
serviceGroup
service name="myService"
descriptionWeb Service例子/description
parameter name="ServiceClass"service.MyService/parameter
messageReceivers
messageReceiver mep="w3.org/2004/08/wsdl/in-out" class="9adb-080d-7e18-893a org.apache.axis2.rpc.receivers.RPCMessageReceiver" /
messageReceiver mep="w3.org/2004/08/wsdl/in-only" class="080d-7e18-893a-915e org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /
/messageReceivers
/service
/serviceGroup
七、在浏览器中访问localhost:8080/WebServiceDemo/services/listServices
可以看到myService服务,说明服务已部署成功
输入localhost:8080/WebServiceDemo/services/myService?wsdl
可以查看到该Web服务的描述文件
其实,axis2-web下面的东西可以不要那么多,我就只保留了index.jsp,httpbase.jsp和listServices.jsp这三个文件
PHP如何调用webservice
最近工作中需要用php调用web service接口,对php不熟,上网搜搜,发现关于用php调用web service的文章也不多,不少还是php4里用nusoap这个模块调用的方法,其实php5里已经包含了处理soap的模块,但是资料太少了,上php官网上查帮助,写的不是很容易理解,经过多次实践,终于搞清楚了,php调用web service还是非常简单的。下面用一个例子说明:
web service服务是查询QQ用户是否在线
使用php5开发客户端:
?php
try {
//$client = new SoapClient("HelloService.wsdl",array('encoding'='UTF-8'));
$client = new SoapClient("webservices/qqOnlineWebService.asmx?wsdl");
var_dump($client-__getFunctions());
print("br/");
var_dump($client-__getTypes());
print("br/");
class qqCheckOnline{
var $qqCode = "10000";
};
$arrPara = array(new qqCheckOnline);
$arrResult = $client-__Call("qqCheckOnline",$arrPara);//$client-qqCheckOnline($arrPara);
echo $arrResult-qqCheckOnlineResult . "br/";
} catch (SOAPFault $e) {
print $e;
}
?
代码确实很简单吧,创建SoapClient对象时,可以使用保存在本地WSDL文件,也可以使用远程的地址,后面的array数组里可以带上很多的参数,具体参数可以查php的SoapClient帮助,这里带的是字符集编码,如果调用方法的参数里有中文,一定要指定字符集编码,否则会出错。
调用web service前可以先调用SoapClient的__geunctions()和__getTypes()方法看一下你要调用的web service暴露的方法,参数和数据类型,需要注意的是传入的参数名一定要和soapclient里面定义的一致,否则参数是传不过去的。
需要使用SoapClient的__soapCall()或__call()方法,具体使用方法可以查php的帮助文档。如果参数要求是一个结构体,请用类代替,如上面的代码。
另外发现个问题,如果web service方法返回的是xml格式的字符串,php接收到以后会自己把数据内容解析出来,而不是xml字符串.
如何搭建基于cxf的webservice服务端
方法/步骤
如果是搭建web项目,首先可以从官网上示例程序,将里面的web.xml文件直接替换到新建的项目。进入apache官网,点击project
点击选择下载的镜像文件,通过这个链接就可以进入apache下所有开源项目下载地址界面。
找到cxf项目,选择合适的版本,可以下载带有源码或者不带有源码的程序示例
创建maven工程。打开eclipse,点击File--新建--Maven project就可以创建maven工程。
打开maven项目的pom.xml文件,将cxf需要的jar包添加到依赖中。
(由于文件内容比较多,如果你有需要,可以留言)
编写对外公布的接口和实现类。编写对外公布的接口,同时在接口的上面添加@Webservice的注解。编写实现类也要添加。
启动项目,本示例采用java application的方式启动,启动之后,在浏览器中输入地址就可以访问到wsdl文件内容。
发布于 2022-09-10 16:56:16 回复
发布于 2022-09-10 16:52:53 回复
发布于 2022-09-10 22:12:36 回复