我试图从Unity做一个HTTP删除请求,并试图使用.Net的System.Web命名空间中包含的HttpRequest类
我怎样才能实现这一目标,我认为必须对某个名称空间进行某种导入,但是如何进行?
希望有人可以给我一些指导
答案 0 :(得分:7)
HttpClient
仅适用于 4.5 NET及以上版本,Unity不使用该版本。 Unity使用 3.5 .NET版本。
如果您使用的是Unity 5.3,UnityWebRequest.Delete
可用于发出删除请求。它可以在Experimental.Networking
命名空间中找到。如果您使用的是Unity 5.4及更高版本,则可以在UnityWebRequest
命名空间中找到UnityEngine.Networking;
。
完整的工作示例:
IEnumerator makeRequest(string url)
{
UnityWebRequest delReq = UnityWebRequest.Delete(url);
yield return delReq.Send();
if (delReq.isError)
{
Debug.Log("Error: " + delReq.error);
}
else
{
Debug.Log("Received " + delReq.downloadHandler.text);
}
}
<强>用法强>:
StartCoroutine(makeRequest("http://www.example.com/whatever"));
确保包含using UnityEngine.Networking
。您可以使用here找到完整的示例。
编辑(更新)
Unity现在支持.NET 4.5,因此如果您愿意,现在可以使用HttpClient。有关如何启用它的信息,请参阅this帖子。
启用后,
在我的计算机上转到<UnityInstallationDirectory>\Editor\Data\MonoBleedingEdge\lib\mono\4.5
或例如C:\Program Files\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5
。
进入此目录后,将System.Net.Http.dll
复制到<ProjectName>\Assets
目录,导入HttpClient
命名空间后,您应该可以使用System.Net.Http
。如果还有其他关于缺少依赖项的错误,您也可以从此路径获取dll并将它们复制到<ProjectName>\Assets
目录。
答案 1 :(得分:1)
在当前版本的Unity中,即使在.NET Standard 2.0目标上,也支持开箱即用的HTTPClient。这是有关如何使用它访问REST api的示例代码。
public static async Task<Resource> GetResource()
{
using (var httpClient = new HttpClient())
{
httpClient.BaseAddress = new Uri(URL);
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await httpClient.GetAsync("api/session");
if (response.StatusCode != HttpStatusCode.OK)
return null;
var resourceJson = await response.Content.ReadAsStringAsync();
return JsonUtility.FromJson<Resource>(resourceJson);
}
}
我在https://forum.unity.com/threads/httpclient-on-net-standard-2-0.608800/上的答案的副本