欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java客户端调用.NET的WebService实例

程序员文章站 2024-03-01 10:33:16
项目需要去调用.net的websrevice,本身是java,研究了半天,终于有些头绪,记下来。 1,新建.net webservice。只在原方法上加上一个string...

项目需要去调用.net的websrevice,本身是java,研究了半天,终于有些头绪,记下来。

1,新建.net webservice。只在原方法上加上一个string类型的参数str

[webmethod]
public string helloworld(string str)
{
  return "hello world";
}

2,新建java的webservice客户端,lib引入以下5个jar包(我是用idea生成的webservice客户端,会下载7个包,我试着删掉了log4j和saaj两个包也能正常运行)

Java客户端调用.NET的WebService实例

import org.apache.axis.client.call;
import org.apache.axis.client.service;
import org.apache.axis.encoding.xmltype;
import javax.xml.namespace.qname;
import javax.xml.rpc.parametermode;
 
public class helloworldclient {
 public static void main(string[] argv) {
   string endpoint ="http://localhost:64662/webservice1.asmx?wsdl";
   try {
     // 定义服务
     service service = new service();
     call call = (call) service.createcall();
     call.settargetendpointaddress(endpoint);
     call.setoperationname(new qname("http://tempuri.org/", "helloworld"));
     call.setsoapactionuri("http://tempuri.org/helloworld");
     call.addparameter(new qname("http://tempuri.org/", "str"),// 这里的str对应webservice参数名称
         xmltype.soap_string, parametermode.in);
     call.setreturntype(xmltype.soap_string);
     string retval1 = (string) call.invoke(new object[] {"hello world!"});
     system.out.println(retval1);
   } catch (exception e) {
     e.printstacktrace();
   }
 }
}

注:

1,网上看到有直接写成call.setoperationname("helloworld"),我试过不行。不知道是不是跨语言的原因。

2,网上也看到省略call.setsoapactionuri这 一句的,但我的报错了。

3,其实项目的webservice里面用的参数是实体,我试着java端通过xmltype.xsd_anytype类型传实体过去,结果说类型没注册之类的。网上看有方案比较繁琐,倒不如将实体序列化成json串传过去省事。

4,参数的命名空间参见服务页面

Java客户端调用.NET的WebService实例

以上这篇java客户端调用.net的webservice实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。