带有 Unity / Hololens 的 HttpClient

HttpClient with Unity / Hololens

我目前正在研究 Hololens 和 Hololens 编程。对于我的任务,我需要与我的 REST API 通信并使用数据构建一些东西。

我正在尝试使用 HttpClient 来完成我的任务。

我用 Install-Package Microsoft.AspNet.WebApi.Client 安装了它,所以当我在 Visual Studio 2017 年编辑脚本时,它可以正常工作。命名空间 System.Net.Http 工作正常。

但是当我切换到 Unity 时,它一直告诉我以下内容:

Assets/Scripts/RestClient.cs(77,46): error CS1061: Type 'System.Net.Http.HttpContent' does not contain a definition for 'ReadAsAsync' and no extension method 'ReadAsAsync' of type 'System.Net.Http.HttpContent' could be found. Are you missing an assembly reference?

它引用了我之前链接的微软文档中的代码片段:

static async Task<Product> GetProductAsync(string path)
{
    Product product = null;
    HttpResponseMessage response = await client.GetAsync(path);
    if (response.IsSuccessStatusCode)
    {
        product = await response.Content.ReadAsAsync<Product>();
    }
    return product;
}

它只是说,没有 ReadAsAsync<T>(),但它在 Visual Studio 2017 年有效,并且在文档中。我很困惑,知道吗。

我几乎一整天都在努力解决这个问题。

已经做了:

使用平台#define 指令标记您的代码NETFX_CORE。示例:

#if !NETFX_CORE
    Debug.LogError("API is restricted to Universal Windows Platform"); // Error in Editor and elsewhere but not on UWP i.e. Hololens
#else
    // your UWP specific code to run on Hololens
#endif

Unity 平台#define 指令:https://docs.unity3d.com/Manual/PlatformDependentCompilation.html

此外,请确保您已在播放器 Settings/Publishing Settings/Capabilities 中选中 InternetClient 功能以通过 Internet 发送消息。如果您打算在本地网络上工作,则需要 PrivateNetworkClientServer 功能。