0

この問題があります: Apache から XmlRpc-Client を使用してカスタム xml 要求を送信しようとしています。XmlRpcClient のインスタンスを取得しました。これには、「実行」と呼ばれるいくつかのメソッドが含まれており、次のようになります。

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>

前もって感謝します!

4

1 に答える 1

0

Apache XML-RPCは、 XML-RPCプロトコルとの通信用です。送信しようとしているメッセージは、別のプロトコルであるSOAPです ( 「XML-RPC と SOAP の違いは何ですか?」という質問を参照してください)。

このメッセージを送信するには、通常の HTTP クライアントを使用してプレーン テキスト (単純なメッセージが 1 つだけの場合) として送信するか、本格的な SOAP ライブラリを使用します。

于 2013-05-13T19:07:05.057 に答える