HttpClient 和 Unity 的区别 UnityWebRequest/WWW API

Difference between HttpClient and Unity's UnityWebRequest/WWW API

Unity 现在支持 .NET 4.5,我可以使用 System.Net.Http 命名空间中的 HttpClient class。这很好,因为我有现成的客户端库,因此很容易重用。

有谁知道使用 mono HttpClientUnity 自己的网络 之间的内部区别class是吗?

恐怕 HttpClient 没有针对不同的平台进行优化,因此可能会导致问题或变慢。

两者有很多不同。

  • UnityWebRequest 不允许您使用更改某些 header。使用 HttpClient,您几乎可以更改任何 header.

  • UnityWebRequest 的使用无需担心线程或异步内容。你所做的就是使用协程等待请求。整个线程的东西已经在本机端为您完成了。

  • 一些平台不支持 System.Net 命名空间中的任何内容。其中之一是 WebGL。这意味着当您将平台切换到 WebGL 时 HttpClient 甚至不会编译。 UnityWebRequest 与 WebGL 配合良好。

  • UnityWebRequest是为了方便下载内存中的数据,并将数据转换成AudioClipVideoClip、[=20等Unity资源=]、Texture2D 等等。使用 HttpClient,您将不得不编写大量代码来检索此类数据,或者可能必须在收到数据后将数据保存在光盘上才能将它们转换为 Unity 资源形式。

  • 想在 UnityWebRequest 中使用 SSL?祝你好运!您最终只会遇到模棱两可的 "unknown error" 错误。当 SSL 涉及到您的 HttpClient 是选项。

对于我刚才提到的所有内容,您应该移植您的代码以使用 UnityWebRequest,除非您正在做一些 UnityWebRequest 不支持的事情。