从metro应用程序访问特定的服务方法?

时间:2012-07-31 05:14:42

标签: windows windows-phone-7 microsoft-metro windows-runtime winrt-async

我有一个Web服务,我在我的客户端应用程序(metro应用程序)中访问,但我想访问这些方法中的特定方法我应该怎么做,

截至目前,我正在以这种方式从我的地铁应用程序访问Web服务: -

private async void Button_Click_1(object sender, RoutedEventArgs e)
        {
            string responseBodyAsText;
            HttpClient client = new HttpClient();
            HttpResponseMessage response = await client.GetAsync("http://182.134.34.99/OE/examplewebservices.svc");
            response.EnsureSuccessStatusCode();
            StatusText.Text = response.StatusCode.ToString();
            responseBodyAsText = await response.Content.ReadAsStringAsync();

        }

我的要求是: - examplewebservices里面有很多方法,所以我想访问其中的一个方法,将输入参数传递给该方法并获得结果。

1)如何在那些多种方法(来自metro应用程序)中访问一个特定方法? 2)如何将输入传递给该服务方法(来自metro app)?

问题可能对您来说非常基础,请帮帮忙。我是都市应用程序开发的新手。

提前致谢。

2 个答案:

答案 0 :(得分:0)

您拥有的代码不会调用服务,它会下载服务定义页面。您需要向项目添加服务引用(右键单击项目节点,从上下文菜单中选择“添加服务引用”)。然后,您将能够调用您的服务方法。在WinRT应用程序中,您只能异步调用Web服务,因此所有方法都将具有“Async”后缀,并且在调用它时必须使用async / await模式。

答案 1 :(得分:0)

要在服务上调用操作,您可以使用此模式:

    using (HttpClient client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://182.134.34.99/OE/examplewebservices.svc");

            HttpResponseMessage response = await client.GetAsync("MyOperation");

            ...

        }

要在这个简单的示例中发送值,您可以将它们作为QueryStrings发送到MyOperation字符串,如下所示:MyOperation?myvalue = 1 etc.

除此之外,@ Seva Titov对动态方面做出了很好的回应。