Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Unity C脚本中向localhost发出GET请求_C#_Json_Unity3d_Get - Fatal编程技术网

C# 在Unity C脚本中向localhost发出GET请求

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

我试图在Unity C脚本中从localhost获取JSON负载的GET请求。我已经用一个单独的C文件成功地完成了POST、PUT和GET请求,但是unity需要使用UnityWebRequests。我的Unity代码在Unity控制台中返回未知错误,但在日志文件中,第一个错误是无法连接到目标主机

类似的问题通过改变网址得到了解决。我知道我的网址是正确的,因为我可以使用Postman应用程序和我自己的单独C代码成功地发出请求。 isNetworkError的调试代码返回True

我使用TODOAPI教程设置了服务器,并修改了项目内容,使其仅包含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);
        }
    }
}
这是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重定向位置吗?据我所知,早期的统一验证无法解决这一问题。它似乎无法解决,但感谢您的建议: