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

「XML Web Service の呼び出し」への0件のフィードバック

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です