利用Java怎么调用.NET项目中的WebService?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联不只是一家网站建设的网络公司;我们对营销、技术、服务都有自己独特见解,公司采取“创意+综合+营销”一体化的方式为您提供更专业的服务!我们经历的每一步也许不一定是最完美的,但每一步都有值得深思的意义。我们珍视每一份信任,关注我们的成都网站建设、成都网站制作质量和服务品质,在得到用户满意的同时,也能得到同行业的专业认可,能够为行业创新发展助力。未来将继续专注于技术创新,服务升级,满足企业一站式成都全网营销推广需求,让再小的高端网站设计也能产生价值!
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两个包也能正常运行)
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问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。