图文并茂——使用xfire编写webservice,并通过C#调用
2007-07-24 14:57
676 查看
我没学习过axis系列,一开始学的就是xfire,myeclipse5.1支持xfire支持的非常棒。这里讲解一个简单的例子,
1.首先建立一个web service工程:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/04/9e88d6320feab867b91481869892d9fb.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/04/5a27e62c028eb6d8a392d2ec33b23e41.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/04/ea312b84097ce8d9393a4d8d51f384b4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/04/1710fe42f6f997121d25ad6451986679)
点击finish之后,myeclipse自动帮你生成services.xml以及web应用目录结构,其中的services.xml是你导出服务的配置文件,注意在WEB-INF/web.xml文件中配置了xfire自己的servlet.
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
2.接下来,现在编写要导出的pojo类,首先是接口:
package net.rubyeye.webservicedemo;
//Generated by MyEclipse
public interface IHelloWorldService {
public String sayHello(String name);
}
这个接口我们只提供一个方法:sayHello(),我们没有采用JSR181标注式的声明方式,还是采用xml配置文件。然后是实现类:
package net.rubyeye.webservicedemo;
//Generated by MyEclipse
public class HelloWorldServiceImpl implements IHelloWorldService {
public String sayHello(String name){
return "hello,"+name;
}
}
最后,配置下services.xml文件:
<service>
<name>HelloWorldService</name>
<serviceClass>
net.rubyeye.webservicedemo.IHelloWorldService
</serviceClass>
<implementationClass>
net.rubyeye.webservicedemo.HelloWorldServiceImpl
</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service>
我们的web服务名称叫做HelloWorldService,接口是IHelloWorldService,实现类是HelloWorldServiceImpl。注意,其实我们这三个步骤可以一步完成,只要直接使用myeclipse的new web service向导即可
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/04/ebec190bd6065db1f2298c8d9ba26714.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/04/59d0c002c3431ecb89cd9bbdb61800d8.gif)
3.然后将此工程部署到tomcat上,通过http://localhost:8081/HelloWorld/services/HelloWorldService?wsdl可以看到生成的wsdl文件。注意,在部署之后,services会被拷贝到WEB-INF/classes/META-INF/xfire目录下,xfire会自动搜索此目录并加载配置文件。我们可以编写一个client来测试web服务,你也可以点击myeclipse上的Launch the Web Services来测试web服务
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/11/57418d48bed702a95efc6cb23f1039ed.gif)
4.编写client代码:
package net.rubyeye.webservicedemo;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
public class HelloWorldClient {
public static void main(String args[]) {
Service srvcModel = new ObjectServiceFactory()
.create(IHelloWorldService.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
String helloWorldURL = "http://localhost:8081/HelloWorld/services/HelloWorldService";
try {
IHelloWorldService srvc = (IHelloWorldService) factory.create(
srvcModel, helloWorldURL);
System.out.print(srvc.sayHello("dennis"));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
执行,打印:hello,dennis
注意,你也可以使用MyEclipse的new webservice client向导自动生成client,同时生成供客户端调用的stub类等。
最后,我们再编写一个C#调用此web service的例子。
1.在vs.net中新建一个windows 应用程序项目,并添加一个button,和一个label
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/11/be4ff0b0bd9f5e83d707ea581e034cf8)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/11/4bb4772fca28cefe08a2366c49d564f0)
2.项目菜单——》添加web应用,输入我们要调用的web服务的wsdl文件的url,并点击前往。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/11/2f19b0c17f62778cbad25309f87d1248)
3.添加引用之后,vs.net会自动帮你生成提供给客户端调用的stub等,这些文件在名为localhost的命名空间下。此空间下将有一个类,名为HelloWorldService。最后,在button1的onclick事件中添加代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace MyProject
{
public partial class Form1 : Form
{
localhost.HelloWorldService helloService = new localhost.HelloWorldService();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
label1.Text = helloService.sayHello("dennis");
}
}
}
我们new一个HelloWorldService ,并调用sayHello方法,将结果显示在label上
4.执行ctr+F5
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/11/515226f60a0766f97747a14c515c8e32)
1.首先建立一个web service工程:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/04/9e88d6320feab867b91481869892d9fb.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/04/5a27e62c028eb6d8a392d2ec33b23e41.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/04/ea312b84097ce8d9393a4d8d51f384b4.gif)
点击finish之后,myeclipse自动帮你生成services.xml以及web应用目录结构,其中的services.xml是你导出服务的配置文件,注意在WEB-INF/web.xml文件中配置了xfire自己的servlet.
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
2.接下来,现在编写要导出的pojo类,首先是接口:
package net.rubyeye.webservicedemo;
//Generated by MyEclipse
public interface IHelloWorldService {
public String sayHello(String name);
}
这个接口我们只提供一个方法:sayHello(),我们没有采用JSR181标注式的声明方式,还是采用xml配置文件。然后是实现类:
package net.rubyeye.webservicedemo;
//Generated by MyEclipse
public class HelloWorldServiceImpl implements IHelloWorldService {
public String sayHello(String name){
return "hello,"+name;
}
}
最后,配置下services.xml文件:
<service>
<name>HelloWorldService</name>
<serviceClass>
net.rubyeye.webservicedemo.IHelloWorldService
</serviceClass>
<implementationClass>
net.rubyeye.webservicedemo.HelloWorldServiceImpl
</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service>
我们的web服务名称叫做HelloWorldService,接口是IHelloWorldService,实现类是HelloWorldServiceImpl。注意,其实我们这三个步骤可以一步完成,只要直接使用myeclipse的new web service向导即可
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/04/ebec190bd6065db1f2298c8d9ba26714.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/04/59d0c002c3431ecb89cd9bbdb61800d8.gif)
3.然后将此工程部署到tomcat上,通过http://localhost:8081/HelloWorld/services/HelloWorldService?wsdl可以看到生成的wsdl文件。注意,在部署之后,services会被拷贝到WEB-INF/classes/META-INF/xfire目录下,xfire会自动搜索此目录并加载配置文件。我们可以编写一个client来测试web服务,你也可以点击myeclipse上的Launch the Web Services来测试web服务
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/11/57418d48bed702a95efc6cb23f1039ed.gif)
4.编写client代码:
package net.rubyeye.webservicedemo;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
public class HelloWorldClient {
public static void main(String args[]) {
Service srvcModel = new ObjectServiceFactory()
.create(IHelloWorldService.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
String helloWorldURL = "http://localhost:8081/HelloWorld/services/HelloWorldService";
try {
IHelloWorldService srvc = (IHelloWorldService) factory.create(
srvcModel, helloWorldURL);
System.out.print(srvc.sayHello("dennis"));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
执行,打印:hello,dennis
注意,你也可以使用MyEclipse的new webservice client向导自动生成client,同时生成供客户端调用的stub类等。
最后,我们再编写一个C#调用此web service的例子。
1.在vs.net中新建一个windows 应用程序项目,并添加一个button,和一个label
2.项目菜单——》添加web应用,输入我们要调用的web服务的wsdl文件的url,并点击前往。
3.添加引用之后,vs.net会自动帮你生成提供给客户端调用的stub等,这些文件在名为localhost的命名空间下。此空间下将有一个类,名为HelloWorldService。最后,在button1的onclick事件中添加代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace MyProject
{
public partial class Form1 : Form
{
localhost.HelloWorldService helloService = new localhost.HelloWorldService();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
label1.Text = helloService.sayHello("dennis");
}
}
}
我们new一个HelloWorldService ,并调用sayHello方法,将结果显示在label上
4.执行ctr+F5
相关文章推荐
- 图文并茂——使用xfire编写webservice,并通过C#调用
- 图文并茂——使用xfire编写webservice,并通过C#调用
- 图文并茂——使用xfire编写webservice,并通过C#调用
- 图文并茂——使用xfire编写webservice,并通过C#调用
- 使用xfire编写webservice,并通过C#调用
- 图文并茂——使用xfire编写webservice,并通过C#调用
- 使用XFire创建WebService实例、C#调用
- c#编写com使用对webservice调用
- C#通过构造Soap信息使用HttpWebRequest调用WebService
- 图文并茂——使用xfire编写webservice
- c#通过 wsdl调用Webservice 源码
- C#通过http post方式调用需要证书的webservice
- 用C#通过反射实现动态调用WebService 告别Web引用(转载)
- java 编写webservice 接口(xfire) ,调用webservice接口
- C#调用Axis2发布的带SoapHeader用户验证的WebService(通过测试)
- WebService——使用C#编写WebService的服务端
- Dephi调用C#编写的WebService的一些问题与解决
- Android使用ksoap2调用C#中的webservice函数方法
- 调用XFire框架编写的webservice接口的理解
- android使用xfire webservice框架远程对sqlserver操作(包括增删改查)的实例!!已在真机上试验通过