在 Unity C# 脚本中向 localhost 发出 GET 请求
2019-01-22
4125
我尝试使用 Unity C# 脚本从本地主机发出 JSON 负载的 GET 请求。我使用单独的 C# 文件成功发出了 POST、PUT 和 GET 请求,但 Unity 需要使用 UnityWebRequest。我的 Unity 代码在 Unity 控制台中返回“未知错误”错误,但在日志文件中第一个错误是“无法连接到目标主机”。
通过更改网址解决了类似的问题。我知道我的网址是正确的,因为我可以使用 Postman 应用程序和我自己单独的 C# 代码成功发出请求。 调试代码对 isNetworkError 返回 True。
我使用 ToDo API 教程 此处 设置了我的服务器,并将项目内容修改为仅包含 ID 和字符串数据。
如果有人能告诉我为什么它不起作用,并提供解决方案,我将不胜感激!
我的代码:
IEnumerator GetText()
{
using (UnityWebRequest www = UnityWebRequest.Get("http://...localhost:[my port]/api/Todo"))
{
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
UnityEngine.Debug.Log(www.error);
UnityEngine.Debug.Log(www.isNetworkError);
}
else
{
// Show results as text
UnityEngine.Debug.Log(www.downloadHandler.text);
}
}
}
这是网络服务器上的数据:
[
{
"id": 2,
"data": "String text"
}
]
作为参考,这里是可单独执行相同操作的 C# 代码的一部分:
async static void GetRequest(string url)
{
using (HttpClient client = new HttpClient())
{
using (HttpResponseMessage response = await client.GetAsync(url))
{
using (HttpContent content = response.Content)
{
string mycontent = await content.ReadAsStringAsync();
UnityEngine.Debug.Log(content);
}
}
}
}
3个回答
实际上 UnityWebRequest 会自动连接到端口 443,这就是它与 postman 兼容而不是与 unity 兼容的原因
Antoine Widmer
2020-08-15
由于您的错误表明“无法连接到目标主机”。这可能是因为“...localhost”不是有效主机。
尝试将“...localhost”更改为“localhost”,并将 [my port] 替换为有效端口号。
Alexander Higgins
2019-01-22
您尝试访问 http://...localhost:[my port]/api/Todo ,我认为该地址无效。请将其更改为正确的地址。
shingo
2019-01-22