axis呼び出しcxfのwebservicesパラメータが受信できません.

2934 ワード

オリジナル作品は、転載を許可します.転載する時は必ずハイパーリンクで文章の原本の出所、作者の情報と本人の声明を明示してください.さもなくば法律責任を追及します.
作者:永恒の_☆住所: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 get AlbumList(@WebParam(name="xml Str")String xml Str);
ここのWebParamは指定しなければなりません.さもなければ呼び出し時にnullに戻ります.