C# 在Unity C脚本中向localhost发出GET请求
我试图在Unity C脚本中从localhost获取JSON负载的GET请求。我已经用一个单独的C文件成功地完成了POST、PUT和GET请求,但是unity需要使用UnityWebRequests。我的Unity代码在Unity控制台中返回未知错误,但在日志文件中,第一个错误是无法连接到目标主机 类似的问题通过改变网址得到了解决。我知道我的网址是正确的,因为我可以使用Postman应用程序和我自己的单独C代码成功地发出请求。 isNetworkError的调试代码返回True 我使用TODOAPI教程设置了服务器,并修改了项目内容,使其仅包含ID和字符串数据 如果有人能告诉我为什么它不起作用,并提供一个解决方案,我将非常感激 我的代码:C# 在Unity C脚本中向localhost发出GET请求,c#,json,unity3d,get,C#,Json,Unity3d,Get,我试图在Unity C脚本中从localhost获取JSON负载的GET请求。我已经用一个单独的C文件成功地完成了POST、PUT和GET请求,但是unity需要使用UnityWebRequests。我的Unity代码在Unity控制台中返回未知错误,但在日志文件中,第一个错误是无法连接到目标主机 类似的问题通过改变网址得到了解决。我知道我的网址是正确的,因为我可以使用Postman应用程序和我自己的单独C代码成功地发出请求。 isNetworkError的调试代码返回True 我使用TODOA
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);
}
}
}
这是web服务器上数据的格式:
[
{
"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);
}
}
}
}
您正在尝试访问http://...localhost:[my port]/api/Todo,我认为这不是一个有效的地址。请将其更改为正确的地址。因为错误状态为无法连接到目标主机。这可能是因为,…localhost不是有效的主机
尝试将…localhost更改为localhost,并用有效的端口号替换[my port]。实际上UnityWebRequest在端口443上自动连接,这就是为什么它与postman一起工作而不与unity一起工作的原因。您是否可以检查此项目的.net framework的版本,如果您尝试127.0.0.1或从命令行ping url,它能解决问题吗?嗨,杰瑞,我使用的.net版本是4.7。我可以把这个url放到我的浏览器中,它也可以很好地工作,显示文本{id:2,data:blah bla}。如果有什么帮助的话,我已经成功ping了127.0.0.1和我的公共IP地址。你能得到这个问题的答案吗?@Robert我没有,不幸的是,我只是用Unity做了一个演示,所以没有进一步研究。Antoine刚刚发表了一个新的评论,这可能是相关的。谢谢,我这样写是为了保持它在论坛上的可读性。我的代码中实际包含的是:,它与Postman和我单独的c脚本一起工作。谢谢,但这需要与其他注释相同的回复。我这样写地址是为了让它在论坛上保持通俗易读。我的代码中实际包含的是:,它与Postman和我单独的c脚本一起工作。目标会用301/302重定向位置吗?据我所知,早期的统一验证无法解决这一问题。它似乎无法解决,但感谢您的建议: