Java 调用 .net Webservice的一些问题和注意事项
最后在研究GWT,需要用到.net 的webservice,网上搜了点代码,基本上问题多多.
Java要调用.net的webservice是需要一个axis的包的. 需要下载,然后引用.
引用的时候,需要注意一些小问题.
Java 端
public String ServiceLogon(String user, String pwd) throws ServiceException { String url="http://localhost/WebServices/Service.asmx"; Service service = new Service(); Call call = (Call)service.createCall(); //We have to figure our the namespace. The java doesn't know where is the namespace call.setOperationName(new QName("http://localhost/WebServices/Service.asmx","Logon")); call.addParameter(new QName("http://localhost/WebServices/Service.asmx","username"),XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); call.addParameter(new QName("http://localhost/WebServices/Service.asmx","password"),XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); String res = ""; try { call.setTargetEndpointAddress(new URL("http://localhost/WebServices/Service.asmx")); res = (String)call.invoke(new Object[]{user,pwd}); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } return res; }
需要注意的一个小问题是, 在引用的时候,要指出.net webservice的namespace.不同的代码namespace不一样的.
还有添加参数的时候, 一定要new 出一个QName来才可以.
call.addParameter(new QName("http://localhost/WebServices/Service.asmx","username"),XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
不new的话, 接收到的参数会是空的.
.net 端.
using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; [WebService(Namespace = "http://localhost/WebServices/Service.asmx")] //namespace [SoapDocumentService(RoutingStyle=SoapServiceRoutingStyle.RequestElement)] //very import must figure out public class Service : System.Web.Services.WebService { public Service () { //Uncomment the following line if using designed components //InitializeComponent(); } [WebMethod] public string HelloWorld() { return "Hello World"; } [WebMethod] public string Logon(string username, string password) { if (username == "steven_wang" && password == "123123") return "Welcome to Asp.net WebService"; else return "username:" +username +", Password:" + password; } }
本代码在vs2005 framework2.0, windowXP, IIS5.0
JDK1.6, Eclipse3.3, axis1.4
情况下调试通过.
Recent Comments