【问题标题】:Access web api 2 app from windows phone 8 application从 windows phone 8 应用程序访问 web api 2 应用程序
【发布时间】:2014-06-02 19:16:44
【问题描述】:

当我尝试从 windows phone 8 应用程序访问在本地主机上运行的 ASP.NET Web Api 2 应用程序时遇到问题。我已经尝试并寻找了很多如何做到这一点的例子,但没有结果。我使用 Fiddler 测试了我的 api,它可以工作。我测试了从 Web 应用程序访问它并且它可以工作,但是当我尝试从 Windows Phone 8 应用程序访问它时它没有。你能告诉我如何配置我的 windows phone 8 模拟器来访问它吗?提前谢谢你。

【问题讨论】:

  • 你做了什么?你正在做什么从手机访问它。
  • 您使用什么主机名/IP 访问您的计算机?
  • 我想从模拟器访问它,因为我没有带 windows phone 的手机

标签: windows-phone-8 asp.net-web-api


【解决方案1】:

模拟器是一个虚拟机,所以手机应用程序中的“localhost”是指模拟器本身,而不是运行 Web 服务的主机。要访问它,您必须提供本地网络中主机的实际 IP 地址,而不是“localhost”。您可以通过在 cmd 控制台中运行 ipconfig 来查看您的 IP。

【讨论】:

    【解决方案2】:

    这里是关于在 Windows Phone 8 中访问 web api 方法的详细文章

    Calling Web API from a Windows Phone 8

    这里具体说一下如何从 Web API 获取数据

     string apiUrl = @"http://www.contoso.com/api/Books";
     WebClient webClient = new WebClient();
                webClient.Headers["Accept"] = "application/json";
                webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadCatalogCompleted);
                webClient.DownloadStringAsync(new Uri(apiUrl));
    
     private void webClient_DownloadCatalogCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            try
            {
                this.Items.Clear();
                if (e.Result != null)
                {
                    var books = JsonConvert.DeserializeObject<BookDetails[]>(e.Result);
                    int id = 0;
                    foreach (BookDetails book in books)
                    {
                        this.Items.Add(new ItemViewModel()
                        {
                            ID = (id++).ToString(),
                            LineOne = book.Title,
                            LineTwo = book.Author,
                            LineThree = book.Description.Replace("\n", " ")
                        });
                    }
                    this.IsDataLoaded = true;
                }
            }
            catch (Exception ex)
            {
                this.Items.Add(new ItemViewModel()
                {
                    ID = "0",
                    LineOne = "An Error Occurred",
                    LineTwo = String.Format("The following exception occured: {0}", ex.Message),
                    LineThree = String.Format("Additional inner exception information: {0}", ex.InnerException.Message)
                });
            }
        }
    

    希望对你有帮助

    【讨论】:

    • 你能用HttpClient代替WebClient吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多