【问题标题】:Unity: Post Request unable to connect to destination hostUnity:发布请求无法连接到目标主机
【发布时间】:2018-08-20 18:05:04
【问题描述】:

我对 Unity 很熟悉,但对尝试与服务器通信却很陌生。我正在尝试设置登录屏幕,但无法正确发布到服务器。奇怪的是 Get 工作正常,但 Post 出现以下错误:

Cannot connect to destination host Network
UnityEngine.Debug:Log(Object)
LoginHandler:CheckForNetworkErrors(UnityWebRequest) (at 
Assets/Scripts/LoginHandler.cs:120)
<LoginUser>c__Iterator2:MoveNext() (at Assets/Scripts/LoginHandler.cs:92)
.UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

我正在使用测试 URL 来确保原始 URL 没有问题。两者都返回相同的错误。一旦玩家点击登录按钮,就会发送以下代码。关于我在这里做错了什么有什么想法吗?

public IEnumerator LoginUser()
{
    string testURL = "https://www.google.com/";

    using (UnityWebRequest get = UnityWebRequest.Get(testURL))
    {
        yield return get.Send();

        ParseCSRF(get.downloadHandler.text);

        CheckForNetworkErrors(get);

    }

    WWWForm form = new WWWForm();
    form.AddField("username", username.text);
    form.AddField("password", password.text);
    form.AddField("_csrf", csrf);

    using (UnityWebRequest post = UnityWebRequest.Post(WWW.EscapeURL(testURL), form))
    {
        yield return post.SendWebRequest();

        CheckForNetworkErrors(post);
    }

}

public void CheckForNetworkErrors(UnityWebRequest www)
{
    if(www.isNetworkError) 
    {
        Debug.Log(www.error + " Network");
    }
    else if (www.isHttpError)
    {
        Debug.Log(www.error + " http");

    }
    else
    {
        Debug.Log("Form upload complete!" + www.downloadHandler.text);
    }
}

【问题讨论】:

  • 您的目标主机是 google 吗?你能ping通你的主机吗?你确定你可以访问你的服务器吗?有时代码可能没问题,但服务器上的某些配置(如端口未打开、防火墙等)可能是问题。

标签: c# unity3d post networking


【解决方案1】:

我已经用下面写的代码进行了测试:

 void Start()
{
    StartCoroutine(GetCrt());
}

IEnumerator GetCrt()
{
    string testURL = "https://www.google.com/";

    using (UnityWebRequest www = UnityWebRequest.Get(testURL))
    {
        yield return www.SendWebRequest();

        if (www.isNetworkError || www.isHttpError)
        {
            Debug.Log(www.error);
        }
        else
        {
            Debug.Log("Get Request Completed!");
        }
    }
}

一切正常。

对于需要真实表单数据的发布请求,您不能向 google.com 发送发布请求。

希望对您有所帮助。

编码愉快!

【讨论】:

  • 嘿!感谢您的回复!帖子给我带来了问题,即使我提供了正确的 URL,它仍然无法连接到目标主机。关于可能导致这种情况的任何想法?
猜你喜欢
  • 1970-01-01
  • 2015-05-08
  • 1970-01-01
  • 2017-04-14
  • 2019-10-30
  • 1970-01-01
  • 2016-01-12
  • 2020-12-15
  • 2018-03-25
相关资源
最近更新 更多