如何从Silverlight以编程方式调用Web服务?

时间:2014-07-24 14:43:09

标签: c# web-services silverlight

我正试图从Silverlight访问WebService并调用它的方法。

我尝试使用以下示例: http://www.codeproject.com/Tips/394436/Calling-a-webservice-programmatically

// In Silverlight it is not posible to use this 
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

但它不适用于Silverlight应用程序。您是否有任何示例如何从Silverlight连接到WebService然后调用其方法?

1 个答案:

答案 0 :(得分:2)

Silverlight不允许您同步执行IO任务以使应用程序保持响应。这就是GetResponse()无法使用的原因。您需要异步获取响应:

WebRequest request = WebRequest.Create(/* URI */);
request.BeginGetResponse(HandleResponse, request);

当repsonse可用时,将调用传递给该方法的委托。此方法的示例实现:

private void HandleResponse(IAsyncResult result)
{
  WebRequest request = (WebRequest)(result.AsyncState);

  using (var response = request.EndGetResponse(result))
  {
    // do something with the response
  }
}