java实现与VS2010创建的WebService通信
所需平台及技术:
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; } }
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();}}}