2008-09-09 14 views
4

C#では、HTTP接続を開き、XMLをダウンロードして結果から1つの値を取得する必要がある場合、どうすればよいですか?一貫性を保つためC#でXML Webサービスから値を取得するにはどうすればよいですか?

、Webサービスがwww.webservice.comにあり、あなたがそれを渡すとPOST引数FXML = 1は、それが戻っ

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

をあなたを与えることを、私はそれが「someValueのを吐き出すしたいと思います想像は"

答えて

3

私はこのコードを使用し、それは素晴らしい作品

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);     
} 

注:

+0

投稿者が要求したとおりにPOSTではなくGET経由でパラメータを渡しています – aku

+0

akuのPOST情報を取得して回答を編集します - まだ2kの担当者はいません:) –

4

私は最初にこれを読むことが有用であろうと思う:

(.NETの)

Creating and Consuming a Web Service

これは、XML入力がある方法を含め、Webサービスは、.NETで使用する方法のチュートリアルのシリーズです使用される(デシリアライゼーション)。私はこのコードをテストする機会を持っていなかったが、それは動作するはずです:)

2

あなたはそのようなものを使用することができます

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; 

編集:私はちょうどあなたがWebサービスではなく、単なるXMLの話をしている実現。 Visual Studioソリューションで、ソリューションエクスプローラで[参照]を右クリックし、[Web参照の追加]を選択します。 URLを尋ねるダイアログが表示されたら、それを貼り付けることができます: "http://www.webservice.com/webservice.asmx"。 VSはあなたが必要とするすべてのヘルパーを自動生成します。次に、あなただけ呼び出すことができます。また、あなたが特別ではなくSOAPよりもPO​​STを使用する必要があるならば、あなたはPOST受信するWebサービスを構成することができますことを追加する価値があるかもしれ

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); 
+0

これは、Webサービスの仕事とオーバーヘッドのように思えるでしょうか? –

+0

Rob、Webサービスは必ずしもWSDL \ SOAPであるとは限りません。場合によっては、自分でサーバーからデータを取得して解析する必要があります。この質問に関する1つの奇妙なことは、POSTメソッドです。通常、このような単純なサービスはGETを使用します。 – aku

関連する問題