在pcl中使用asmx webservice

时间:2014-09-23 06:39:54

标签: c# web-services asmx portable-class-library

我正在开发一个使用第三方.asmx网络服务的应用。我在我的应用程序中使用PCL(便携式类库)。

所以我想在我的应用中使用这些.asmx网络服务。问题是PCL不支持传统的Web服务即.asmx。它支持WCF Web服务。

我看了很多文章,他们建议我从wsdlWCF网络服务。但由于所有Web服务都是第三方,我需要在客户端应用程序中编写代理(在调用Web服务的地方),以便将WCF调用转换为.asmx

我也尝试过使用PCL这个例子。 我正在使用this asmx网络服务

public class PerformLogIn : ILogInService
    {
         public string LogIn(string code)
         {
             ServiceReference1.WeatherSoapClient obj = new ServiceReference1.WeatherSoapClient();
             obj.GetCityForecastByZIPAsync(code);
             ServiceReference1.WeatherReturn get = new ServiceReference1.WeatherReturn();

             return (get.Temperature);
         }

但我没有得到任何结果。 所以有人知道如何做到吗??

1 个答案:

答案 0 :(得分:1)

尤里卡我找到了它..

使用以下代码段

public class PerformLogIn : ILogInService
    {
         public void LogIn(string code)
         {
             ServiceReference1.WeatherSoapClient obj = new ServiceReference1.WeatherSoapClient(
                                        new BasicHttpBinding(),
                                        new EndpointAddress("http://wsf.cdyne.com/WeatherWS/Weather.asmx"));

             obj.GetCityForecastByZIPAsync(code);
             obj.GetCityForecastByZIPCompleted+=getResult;
         }
         void getResult(Object sender,GetCityForecastByZIPCompletedEventArgs e)
         {
             string error = null;

             if (e.Error != null)
                 error = e.Error.Message;
             else if (e.Cancelled)
                 error = "cancelled";
             var result = e.Result; 
         }
   }

因此,您对Web服务的响应存储在result变量中。只需获取所需的数据并将其返回给调用客户端。