0

1 つのパラメーター (値の配列) キーとリードを受け取る xml-rpc Web サービス メソッドを呼び出そうとしています。

キーは「key」という名前で、文字列型の値を持つ必要があります。Leads は、リード データを含む xml ドキュメントです。これは、バイナリ オブジェクトとしてパッケージ化する必要があります。この値はリードという名前で、base64 型である必要があります。

Python でのこのメソッド呼び出しの SINGLE パラメータは次のとおりです。

 r = proxy.leads({'key': key, 'leads': doc})

私の最初の質問は、c# でこれを行うにはどうすればよいですか? .net がそれに最も近いものは、これでは機能しないディクショナリ オブジェクトです。

次に、xml ドキュメントを base64 型のバイナリ オブジェクトにするにはどうすればよいですか? byte[] 配列を base64 文字列に変換するのと同じですか? このような:

 Convert.ToBase64String(byteArray)

リクエストは次のようになります。

 <?xml version="1.0" encoding="iso-8859-1"?>
 <methodCall>
 <methodName>leads</methodName>
 <params>
 <param>
 <value>
 <struct>
  <member>
  <name>key</name>
 <value>
 <string>XXXXXXXXXXX</string>
 </value>
 </member>
 <member>
 <name>leads</name>
 <value>
 <base64>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxlYWRzPgogICA8bGVhZD4K
      ICAgICAgPGlkPjM5OTk3PC9pZD4KICAgICAgPEZpcnN0TmFtZT5Cb2IgSmltPC9GaXJzdE5hbWU+
      CiAgICAgIDxMYXN0TmFtZT5TbWl0aDwvTGFzdE5hbWU+CiAgICAgIDxBZGRyZXNzPjEyMzQgV2Vz
      :
      :
      ICAgICA8UmVjZWl2ZUFkZGxJbmZvPlllczwvUmVjZWl2ZUFkZGxJbmZvPgogICAgICA8bG9wX3dj
      X3N0YXR1cz5ObzwvbG9wX3djX3N0YXR1cz4KICAgPC9sZWFkPgo8L2xlYWRzPg==
 </base64>
 </value>
 </member>
 </struct>
 </value>
 </param>
 </params>
 </methodCall>

私はこの問題に完全に行き詰まっています。どんな助けでも大歓迎です。

4

1 に答える 1

1

このサービスを手動で呼び出す方法については、http://codinghints.blogspot.com/2010/03/xml-rpc-calls-with-c.htmlを参照してください。おそらく良い方法でそれを行うライブラリがあります...

パラメータを指定する方法は、リクエストを構築するためにどのような方法を見つけたかによって異なります。リクエストを手動で構築する場合(String.FormatではなくXDocumentでXMLを構築することをお勧めしますが、例のような非常に単純なケースではString.Formatで問題ない場合があります)、ボイラープレートXMLの適切な場所に値を配置するだけです...

はいバイト配列からbase64までですConvert.ToBase64String(byteArray)

次のようなもので十分です (ただし、一度だけ使用しないコードの場合は、適切な方法で XML を作成してみてください)。

String.Format("<?xml versi... <name>key</name><value><string>{0}</string>...", 
      key, Convert.ToBase64String(byteArray));
于 2012-06-02T01:19:14.263 に答える