所需平台及技术:
java中XFire 1.2, myeclipse 8.0平台自带的.
最近做一个项目,需要用到webService技术,部署net环境与java进行通信.
这里主要说明一下java连接net部署的Webservice.
1.首先用VS2010新建WebService服务.
VS2010默认使用的是net Framefork4.0,
当使用VS2010创建WebService项目时,
VS2010里找不到ASP.NET WebService application,
因为微软已经将它融合进了wcf service application,
创建WCF即可.
亦或者想继续使用WebService的话,
可以将Framefork 4.0改成 3.5 然后就能找到Web Service application了.
这里用到的是 Framefork 3.5自建的.
2.新建好WebService以后,添加两个方法,
public class Service1 : System.Web.Services.WebService
{
// [SoapRpcMethodAttribute(Action = "http://www.my.com/Rpc", RequestNamespace = "http://www.my.com/SU", ResponseNamespace = "http://www.my.com/SU")]
[WebMethod(Description = "Show message info")]
public string Show(string message)
{
return "-------------"+message;
}
[WebMethod(Description = "计算a+b=sum的功能")]
public String Add(int a, int b,String c)
{
int d = a + b;
return c+d;
}
}
按F5运行即可.
3.使用Myeclipse8.0新建一个Web Service project,名字自己填,下面可以选择使用什么框架 FrameWork中选择XFire.然后完成.
4.添加一个普通的类文件.用来跟net新建的web服务通信.代码如下:
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import org.codehaus.xfire.client.Client;
public class testService {
public static void main(String[] args) {
try {
Client client = new Client(new URL("http://localhost:8029/Service1.asmx?WSDL"));
//Object[] results = client.invoke("Show", new String[]{"为什么呢"});
//System.out.println(results[0]);
Map map=new HashMap();
map.put("a", 123);
map.put("b", 123);
map.put("c", "a+b结果为:");
Object[] obj=new Object[]{map.get("a"),map.get("b"),map.get("c")};
Object[] results = client.invoke("Add",obj);
System.out.println(results[0]);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
其中URL为webService中的wsdl地址.查看方式如下图:
点击服务说明以后的地址即可,如果链接网络上的地址,直接替换,
client.invoke()接收两个参数.第一个是方法名,第二个是参数.我现在所知的可接收{自定义jiavaBean,Map }
到这里.就算告一段落了.
还有就是这个可能会报一个异常,提示
java.lang.NoClassDefFoundError: org/apache/commons/httpclient/Credentials
很简单添加commons-httpclient-3.0.jar 包即可.
此例子仅供参考.只用于记录本人的练习过程,本人新手,有什么不足,还请各位大虾多多指教.