关于Java调用.NET WCF和Webservice以及javaWebService通用的一种方法

前景:关于.NET WCF和Webservice的意义及其区别,大家可以自行百度,不想百度的用Google,反正我个人喜欢谷歌。
这两天一直在研究使用java 调用.NET WCF和Webservice服务,使用HTTPPOST,ASIX2,RPC各种方法都试了一遍,都是不通的,调用失败,返回的异常信息,搜索倒是很多,但是解决办法没有一个靠谱的(当然主要可能是本人的原因,笨的像头猪),具体的异常信息就不贴了,我遇到过的你们肯定也遇到过,所以大家共勉,反正我是没找到解决的办法,你们要是有更好效率更高的可以留言,一起学习。
这里使用的是asix方法调用.NET WCF和Webservice,至于asix是啥自行百度,这里不做文字解析,主要上代码和实际操作。
另外,需要引入很多关于asix的pom依赖,可以在 Maven库 https://mvnrepository.com/ 自行下载
第一种:调用Java的webservice
关于Java调用.NET WCF和Webservice以及javaWebService通用的一种方法_第1张图片
关于Java调用.NET WCF和Webservice以及javaWebService通用的一种方法_第2张图片
给出文字版

@Test
    public  void  callWebServiceAxis2() throws Exception {
		  String str = "";
		  String endpoint = "http://127.0.0.1:8084/webservice/test?wsdl";
		  String namespace = "http://webservice.com/";
		  String methodName = "userMethod";
		  Service service = new Service();
		  Call call = null;
		  try {
		   call = (Call) service.createCall();
		  } catch (ServiceException e1) {
		   e1.printStackTrace();
		  }
		  try {
		   call.setTargetEndpointAddress(new java.net.URL(endpoint));
		  } catch (MalformedURLException e1) {
		   e1.printStackTrace();
		  }
		  call.setUseSOAPAction(true);
		  call.setSOAPActionURI("");
		  call.setOperationName(new QName(namespace, methodName));
		  call.addParameter(new javax.xml.namespace.QName(namespace, "name"),
		    org.apache.axis.encoding.XMLType.XSD_STRING,
		    javax.xml.rpc.ParameterMode.IN);// document访问格式,必须
		  call.addParameter(new javax.xml.namespace.QName(namespace, "sex"),
				    org.apache.axis.encoding.XMLType.XSD_STRING,
				    javax.xml.rpc.ParameterMode.IN);// document访问格式,必须
		  call.addParameter(new javax.xml.namespace.QName(namespace, "age"),
				    org.apache.axis.encoding.XMLType.XSD_STRING,
				    javax.xml.rpc.ParameterMode.IN);// document访问格式,必须
		  call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
		  try {
		   str = (String) call.invoke(new Object[] { "周杰伦","男","15"});
		  } catch (RemoteException e) {
		   // TODO Auto-generated catch block
		   e.printStackTrace();
	 }
		  System.out.println("服务器返回值是:" + str + "!");
		 }

/参数说明/:上述方法所有的参数都需根据自己的服务而定,使用网页直接测试
java和.net需要的参数有些不同,所有的参数值,有的话就给,没有为空即可!另外从URL是看不到参数的,可以下载SOAPUI使用,具体使用办法自行百度~
关于Java调用.NET WCF和Webservice以及javaWebService通用的一种方法_第3张图片以上是javaService调用,代码相同,下面是wcf的参数值说明,
关于Java调用.NET WCF和Webservice以及javaWebService通用的一种方法_第4张图片
第三种,.NET的Webservice参数值说明,直接很明确的告诉了。
关于Java调用.NET WCF和Webservice以及javaWebService通用的一种方法_第5张图片
以上方法都是亲测有效的,不可以的或者有问题的可以给我留言,

你可能感兴趣的:(java)