2013-03-25 3 views
0

이 문제가 발생했습니다. Apache의 XmlRpc-Client를 사용하여 사용자 지정 xml 요청을 보내려고합니다. 나는 XmlRpcClient의 인스턴스를 가지고 있으며 "실행"와 같이 불리는 몇 가지 방법이 포함되어XmlRpc-Client를 사용하여 XML 요청을 사용자 지정하는 방법

public class RPCClient { 
    public static void main(String[] args) { 
     try { 
      XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); 
      config.setServerURL(new URL("http://localhost:8888/SOAP")); 

      XmlRpcClient client = new XmlRpcClient(); 
      client.setConfig(config); 

      Object[] params = new Object[]{new Integer(4), new Integer(3)}; 
      String myResponse = (String) client.execute("A_Method", params); 

      System.out.println("Suc " + myResponse); 

     } catch (Exception e) { 
      System.out.println("Err " + e.getMessage()); 
     } 
    } 
} 

를 그리고이 보내는 : 한마디로

POST /SOAP HTTP/1.1 
Content-Type: text/xml 
User-Agent: Apache XML RPC 3.1.3 (Sun HTTP Transport) 
Cache-Control: no-cache 
Pragma: no-cache 
Host: *********** 
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 
Connection: keep-alive 
Content-Length: 200 

<?xml version="1.0" encoding="UTF-8"?> 
    <methodCall> 
     <methodName>A_Method</methodName> 
     <params> 
     <param> 
      <value> 
       <i4>4</i4> 
      </value> 
     </param> 
     <param> 
      <value>3</value> 
     </param> 
     </params> 
    </methodCall> 

,이 클라이언트가 더는 "실행이 없다 "간단한 문자열이나 비슷한 것을받는 방법. 그래서 내 질문에 어떻게 사용자 정의 XML을 보낼 수 있습니까?

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:rp="http://www.abcdef.com/GH"xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> 
    <soapenv:Header> </soapenv:Header> 
    <soapenv:Body>  
     <rp:A_Methodsoapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">   
     <package xsi:type="xsd:string">string1</package>   
     <event xsi:type="xsd:string">string2</event>   
     <fields xsi:type="rp:ArrayOfKeyValuePair" soapenc:arrayType="rp:KeyValuePair[]">   
      <item xsi:type="rp:KeyValuePair">      
       <key xsi:type="xsd:string">string3</key>       
       <value xsi:type="xsd:string">123</value>   
      </item>   
     </fields>  
     </rp:A_Method> 
    </soapenv:Body></soapenv:Envelope> 

미리 감사드립니다!

답변

0

Apache XML-RPCXML-RPC 프로토콜과 통신하기위한 것입니다. 보내려는 메시지는 다른 프로토콜 인 SOAP입니다 (질문 : "What's the difference between XML-RPC and SOAP?" 참조).

이 메시지를 보내려면 일반 HTTP 클라이언트를 사용하여 일반 텍스트 (단 하나의 단순한 메시지 인 경우)로 보낼 수도 있고 전체 SOAP 라이브러리를 사용할 수도 있습니다.

+0

저는 이것이 상당히 오래된 질문이라는 것을 알고 있습니다 만, "XmlRpcClient"에 대한 질문 중 최고 순위였습니다. – BoppreH