あなたの質問に直接答えると、C#で可能な最も近い構造は、Dictionary
というよりも、Dictionary<string, object>
$getOurRequest => array(
`aaaa`=> ‘1111’,
`bbbb`=> ‘2222’,
`ccccArray`=> array( ‘cccc3333’, ‘cccc4444‘ ),
`ddddArray`=>array( 'dddd5555','dddd6666' )
);
私は実際に表記法を理解していません$getOurRequest => array(...);
。ここで=>の代わりに=プレーンであるべきではありませんか?
いずれにせよ、C#では類似の変数宣言は次のようになります。
var getOurRequest = new Dictionary<string, object>
{
{"aaaa", "1111"},
{"bbbb", "2222"},
{"ccccArray", new string[] { "cccc3333", "cccc4444" } },
{"ddddArray", new string[] { "dddd5555", "dddd6666" } }
);
ただし、それではHTTPリクエストの送信に関する問題は解決しないと思います。このためにはHttpWebRequest
、Jensenが答えたように、オブジェクトが必要になります。また、上記のハッシュマップ/配列/辞書のすべての「キー」と「値」をクエリパラメータとして指定する必要があります。
@SOAP:のWSDLを発行できる場合web service
、VisualStudio / C#/ svcutilは、Webサービスの呼び出しを非常に簡素化する一連のプロキシクラスを生成できます。可能であれば、メモをドロップしてください。その方法へのリンクが表示されます。または、「C#callwebservice」でGoogleを検索してください。
好奇心から-C#を知らず、PHPをよく知っているのなら、なぜC#コードを要求するのですか?
編集:
コメントでは、「オブジェクトパラメータ」について述べています。PHPまたはJSでは、オブジェクトとキー付き配列の間に少し違いがあります。C#では、「辞書」またはその他のハッシュマップが「一連のキーと値」としてシリアル化されるため、大きな違いがあります。フィールド/値を持つキーを持つオブジェクトとしてではなく、「オブジェクト」、実際にはクラスとオブジェクトインスタンスが必要です。
//[DataContract] - pick one of them
//[Serializable] - they are required, but without seeing your code, it is hard to tell which one
public class MyWebServiceParameter
{
public string aaaa {get;set;} // those must be properties, not fields
public string bbbb {get;set;}
public string[] ccccArray {get;set;}
public string[] ddddArray {get;set;}
}
....
var tmp = new MyWebServiceParameter
{
aaaa = "1111", bbbb = "2222",
ccccArray = new string[] { "....", "...." },
ddddArray = new string[] { "....", "...." }
};
「属性」の1つであるdatacontract/serializableのコメントを解除してください。どちらもC#ランタイムに、このクラスのシリアル化が許可されていることを伝えていますが、それぞれが異なるライブラリからのものであり、.Netのネットワークアプローチの時代のものです。一般に、それぞれは問題ありませんが、WSDLから生成された方法/内容、および使用している.Netと追加のライブラリに応じて1つが適切になります。'最新の'.Netを使用している場合は、DataContractを選択します。
今、あなたはあなたがWSDLを持っていると言いますか?したがって、プロジェクトを右クリックして[サービス参照の追加]または[Web参照の追加]を選択し、ポップアップダイアログでWSDLへのURLを入力します。作成者はそれを解析できる必要があり、そのWebサービスの一連のサポートクラスが生成されます。それらが「MyPHPService」と呼ばれ、「TheServiceMethodName」と呼ばれる操作を定義するとします。
var serv = new MyPHPService();
serv.TheServiceMethodName( tmp ); // just pass the object you have created earlier. Or a dictionary, or other..
WSDLに問題がなく、作成者がそれを正しく理解している場合、SOAPサービスの呼び出しには、これら2行のみが必要です。