4

C# で、HTTP 接続を開いて XML をダウンロードし、結果から 1 つの値を取得する必要がある場合、どうすればよいでしょうか?

一貫性を保つために、Web サービスが www.webservice.com にあり、それに POST 引数 fXML=1 を渡すと返されると想像してください。

<xml><somekey>somevalue</somekey></xml>

「somevalue」を吐き出してほしいです。

4

4 に答える 4

4

最初にこれを読むと役に立つと思います:

Web サービスの作成と使用(.NET で)

これは、XML 入力の使用方法 (逆シリアル化) を含め、.NET での Web サービスの使用方法に関する一連のチュートリアルです。

于 2008-09-09T02:30:19.360 に答える
3

私はこのコードを使用していますが、うまく機能します:

System.Xml.XmlDocument xd = new System.Xml.XmlDocument;
xd.Load("http://www.webservice.com/webservice?fXML=1");
string xPath = "/xml/somekey";
// this node's inner text contains "somevalue"
return xd.SelectSingleNode(xPath).InnerText;

編集: 単純な XML だけでなく、Web サービスについて話していることに気付きました。Visual Studio ソリューションで、ソリューション エクスプローラーの [参照] を右クリックし、[Web 参照の追加] を選択します。URL を尋ねるダイアログが表示されます。「 http://www.webservice.com/webservice.asmx 」に貼り付けるだけです。VS は、必要なすべてのヘルパーを自動生成します。次に、次のように呼び出すことができます。

com.webservice.www.WebService ws = new com.webservice.www.WebService();
// this assumes your web method takes in the fXML as an integer attribute
return ws.SomeWebMethod(1);
于 2008-09-09T04:31:03.610 に答える
2

次のようなものを使用できます。

var client = new WebClient();
var response = client.UploadValues("www.webservice.com", "POST", new NameValueCollection {{"fXML", "1"}});
using (var reader = new StringReader(Encoding.UTF8.GetString(response)))
{
    var xml = XElement.Load(reader);
    var value = xml.Element("somekey").Value;
    Console.WriteLine("Some value: " + value);                
}

このコードをテストする機会はありませんでしたが、動作するはずです:)

于 2008-09-09T02:38:11.573 に答える
0

また、SOAP ではなく POST を特に使用する必要がある場合は、POST 呼び出しを受信するように Web サービスを構成できることも追加する価値があります。

MSDN のページを確認してください: ASP.NET を使用して作成された XML Web サービスの構成オプション

于 2008-09-09T08:23:43.707 に答える