发布于 2018-01-15 20:55:46 | 111 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Java并发编程示例,程序狗速度看过来!

Java程序设计语言

java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。


下面小编就为大家带来一篇Java客户端调用.NET的WebService实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

项目需要去调用.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两个包也能正常运行)


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实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持PHPERZ。



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务