0

NuSoap を使用して PHP で公開したサービスを使用して、C# で SOAP クライアントに取り組んでいます。私の Web サービスは消費の観点からはうまく機能していますが、複雑な型を引数として渡すときに問題が発生しています。

メソッドによって返される複合型を操作するのは問題ありませんが、C# で複合型を実際に操作する方法がわかりません。

誰かが実際にそれを要求しない限り、今のところ長い WSDL は割愛します。しかし、私が扱おうとしている複合型は、別の複合型のリストです。私の C# アプリで行う必要があるのは、リストから項目を追加および削除することですが、その方法がわかりません。

誰かが私を正しい方向に向けることができますか? リクエストに応じて、詳細情報を提供できます。

4

2 に答える 2

0

だから、これは私がこれを読む方法です:

//instantiate proxy

var commandList = getCommands(authToken);

//build an array of new commands

var commands = new [] { new Command { id = "SomeID", command = "SomeCommand" } /*, etc.*/ } };

//assign commands to your list

commandList.Commands = commands;

//do something with the commandList object

Visual Studio でプロキシを生成している場合、配列を厳密に型指定された List オブジェクトに変換するオプションがあります ([サービス参照の追加] -> [詳細設定] -> [コレクション タイプ: System.Collections.Generic.List])。このようにして、commandList.Add() を呼び出すだけです。

また、getCommands() から返される型の名前がなぜ List なのかわかりません。

于 2010-09-17T00:50:29.483 に答える
0

生成された C# SOAP クライアントを実際に使用する方法がわかりませんか?

このようなものはうまくいくはずです...

// Edit an existing file command.
using (var client = new mysiteServicePortTypeClient()) {
    string auth = client.doAuth("user", "pass");
    List l = client.getCommands(auth); // get all of the Command[] arrays
    Command file = l.files[0]; // edit the first Command in the "files" array (will crash if Length == 0, of course
    file.command = "new command"; // since the Command is in the array, this property change will stick
    client.submitResults(auth, l); // send back the same arrays we received, with one altered Command instance
}

[編集] Nicholas が彼の回答で推測しているように、SOAP サービスの定義では、"List" などの一般的な型名を使用しないようにする必要がありSystem.Collections.Generic.List<T>ます。

于 2010-09-17T00:57:25.187 に答える