axis调用cxf 发布的webservices参数收不到

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本人声明。否则将追究法律责任。
作者: 永恒の_☆ 地址: http://blog.csdn.net/chenghui0317/article/details/9310789

现在在学CXF,发布了Webservice服务端 ,如果使用cxf的客户端访问,很简单,如下:

		//这个是用cxf 客户端访问cxf部署的webservice服务
		//千万记住,访问cxf的webservice必须加上namespace ,否则通不过
		//现在又另外一个问题,传递过去的参数服务端接收不到
		JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
		org.apache.cxf.endpoint.Client client = dcf.createClient("http://localhost:8080/facelook/services/facelookWebService?wsdl");
		//url为调用webService的wsdl地址
		QName name=new QName("http://server.webservice.facelook.com/","getAlbumList");
		//namespace是命名空间,methodName是方法名
		String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
				 + " 	 <facelook>"
				 + "	 	<condition>"
				 + " 	 		<name>家</name>"
				 + "			<description></description>"
				 + "			<pageno></pageno>"
				 + "			<pagesize></pagesize>"
				 + "  		</condition>"
				 + "	 </facelook>";
		//paramvalue为参数值
		Object[] objects=client.invoke(name,xmlStr); 
		//调用web Service//输出调用结果
		System.out.println(objects[0].toString());
	

但是在使用axis客户端调用的时候一直是服务端接收不到参数,各种方法都试过了,原来要指定传递的参数以及返回结果的类型。
String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
                 + "      <facelook>"
                 + "         <condition>"
                 + "              <name>家</name>"
                 + "            <description></description>"
                 + "            <pageno></pageno>"
                 + "            <pagesize></pagesize>"
                 + "          </condition>"
                 + "     </facelook>";
        
          Service service = new Service();
          Call call = (Call) service.createCall();
          call.setTargetEndpointAddress("http://localhost:8080/facelook/services/facelookWebService?wsdl");
          QName qName = new QName("http://server.webservice.facelook.com/", "getAlbumList");
          call.setOperationName(qName);
          call.setUseSOAPAction(true);
          //这下面两行一定要加上,否则接收在服务器端收不到。
          call.addParameter("xmlStr", XMLType.XSD_STRING, ParameterMode.IN);
          call.setReturnType(XMLType.XSD_STRING);
          String result = (String) call.invoke(new Object[] { xmlStr });
          System.out.println(result);


还有一点必须说明下:

定义接口的时候:   public String getAlbumList(@WebParam(name="xmlStr") String xmlStr);

这里的WebParam必须指定,否则调用的时候返回null


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值