XML Web Service の呼び出し


CPUの温度を取得する際、WebClient を使用した、非同期呼び出し。

なお、Silverlight 3 Beta では、linq がサポートされていないので動かない。

///////////

WebClient client = new WebClient();

string request = "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"  xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">  <soap:Body><CPUTemperatureStringResponse xmlns=\"http://tempuri.org/\">      <CPUTemperatureStringResult>float</CPUTemperatureStringResult>    </CPUTemperatureStringResponse></soap:Body></soap:Envelope>";

client.Headers.Add(HttpRequestHeader.ContentType, "text/xml");

client.Headers.Add("SOAPAction", "http://tempuri.org/CPUTemperature");

client.UploadStringCompleted += delegate(Object sender2, UploadStringCompletedEventArgs ev)
{
    XNamespace soap="http://schemas.xmlsoap.org/soap/envelope/";
    XNamespace xsi="http://www.w3.org/2001/XMLSchema-instance";
    XNamespace xsd="http://www.w3.org/2001/XMLSchema";
    XNamespace xst = "http://tempuri.org/";

    XDocument xmlHeadlines = XDocument.Parse(ev.Result);
    var headlines = from story in xmlHeadlines.Descendants(xst + "CPUTemperatureResult") select story;

    string temp = headlines.First().Value;

    TextBox1.Text = temp;
};

client.UploadStringAsync(new Uri("http://localhost/SystemTemperature/Temperature.asmx"), request);

コメント / トラックバック1件 to “XML Web Service の呼び出し”

  1. 洋一 Says:

    あれ?確か LINQ to XML は Beta1 でも使えるはずですが。。。それとは別に、WebClientのHeader要素への書き込みは出来なくなっているはず

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中


%d人のブロガーが「いいね」をつけました。