Windows Phone 7使用Webservice WSDL

时间:2011-10-15 22:21:08

标签: web-services windows-phone-7 wsdl

好的我以前写过一些基本的通用网络服务,但我从来没有尝试过使用第三方服务。 我想要消耗的是 http://opendap.co-ops.nos.noaa.gov/axis/webservices/predictions/wsdl/Predictions.wsdl

我没有从这里得到任何结果,也无法找出原因。 更奇怪的是它甚至没有达到PredictionsClient_getPredictionsAndMetadataCompleted当我在代码中放置一个它甚至没有到达它的断点。 任何建议将不胜感激

    public void Bouy(double meters)   
    {   
        PredictionService.Parameters PredictionParams = new PredictionService.Parameters();   
        PredictionService.PredictionsPortTypeClient PredictionsClient = new PredictionService.PredictionsPortTypeClient();   

        GeoCoordinateWatcher gc = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);   
        //gc.Position.Location.Latitude, gc.Position.Location.Longitude   
        GeoCoordinate myLocation = new GeoCoordinate(27.931631,-82.802582);   


        foreach (var bl in BouyLocation.GetAll())   
        {    
            GeoCoordinate otherLocation = new GeoCoordinate(bl.Lat, bl.Lon);   

                PredictionParams.beginDate = DateTime.Now.ToString("yyyyMMdd");   
                PredictionParams.endDate = DateTime.Now.AddDays(1.0).ToString("yyyyMMdd");   
                PredictionParams.stationId = bl.LocationID;   
                PredictionParams.timeZone = 0;   
                PredictionParams.unit = 1;   
                PredictionParams.dataInterval = 6;   
                PredictionsClient.getPredictionsAndMetadataCompleted += new EventHandler<PredictionService.getPredictionsAndMetadataCompletedEventArgs>(PredictionsClient_getPredictionsAndMetadataCompleted);   

                PredictionsClient.getPredictionsAndMetadataAsync(PredictionParams);   


            double mymeters = myLocation.GetDistanceTo(otherLocation);   
            if (mymeters < meters)   
            {   
                TextBlock DynTextBlock = new TextBlock   
                {   
                    Name = "Appearance" + bl.LocationID,   
                    Text = bl.LocationName + PredictionResult,   
                    TextWrapping = System.Windows.TextWrapping.Wrap,   
                    Margin = new Thickness(12, -6, 12, 0),   
                    Style = (Style)Resources["PhoneTextSubtleStyle"]   

                };   

                DynamicAppearance.Children.Add(DynTextBlock);   
                this.nearByLocations.Add(new BouyLocationModel() { LocationName = bl.LocationName, LocationID = bl.LocationID, Lat = bl.Lat, Lon = bl.Lon });   
            }   
        }   
        var test = nearByLocations;   
    }   

    void PredictionsClient_getPredictionsAndMetadataCompleted(object sender, PredictionService.getPredictionsAndMetadataCompletedEventArgs e)   
    {   
        string err = e.Error.ToString();   

        PredictionResult = e.Result.ToString();   
    }  

1 个答案:

答案 0 :(得分:0)

重新阅读您在此处的代码我认为您已使用ServiceReference导入为您自动构建类?

不幸的是我发现这对WP7来说是相当不稳定的,我实际上让它工作的唯一方法是将它连接到Microsoft WCF服务。连接到其他任何东西都不起作用。

如果你进行谷歌搜索,有各种各样的网页谈论它不起作用的事实和解决方法(我无法开展工作)。

然而,有很多方法,但它并不像自动生成的东西那么简单。基本上你手动做事。

虽然还有其他方法可以手动创建Web服务,但我所做的是遵循以下信息,这些信息运行良好:http://zetitle.wordpress.com/2010/10/14/using-reactive-extensions-with-webrequest/

您需要自己解析响应,但XML到LINQ的效果非常好。

希望有所帮助,或者有人会有解决方案,因为我有兴趣了解如何开展工作