Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.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# 统一发布请求_C#_Unity3d_Unity Networking - Fatal编程技术网

C# 统一发布请求

C# 统一发布请求,c#,unity3d,unity-networking,C#,Unity3d,Unity Networking,我正在尝试从Unity3D向我的web服务器发送POST请求。在编辑器中,一切都正常工作,但当我构建二进制文件并尝试从中执行相同操作时,它看起来并没有到达服务器 在服务器上,我将它们处理为: if(isset($_POST['name']) || isset($_POST['score'])) { $name = $_POST['name']; $score = $_POST['score']; .... } 在Unity/C中,我这样做: IEnumerator Up

我正在尝试从Unity3D向我的web服务器发送POST请求。在编辑器中,一切都正常工作,但当我构建二进制文件并尝试从中执行相同操作时,它看起来并没有到达服务器

在服务器上,我将它们处理为:

if(isset($_POST['name']) || isset($_POST['score']))
{
    $name = $_POST['name'];
    $score = $_POST['score'];
    ....
}
在Unity/C中,我这样做:

IEnumerator Upload()
{
    WWWForm form = new WWWForm();
    form.AddField("name", name.text.Replace("|", " ").ToString());
    form.AddField("score", (int)(highScore));
    UnityWebRequest www = UnityWebRequest.Post("https://server_name.com/page.php", form);
    yield return www.Send();
}
有什么原因可以解释为什么它应该在编辑器中工作,而在运行构建的二进制文件时不应该工作

谢谢


编辑:根据请求-我的二进制文件是为Windows和Linux构建的,两者都有相同的错误。我在Windows上运行编辑器(与我使用Windows二进制文件的机器相同),编辑器中没有任何问题。

我甚至不明白编辑器中是如何工作的

您没有遵循文档中描述的方式:

您根本不必使用UnityWebRequest:只需使用WWW和WWWForm

试试这个:

IEnumerator Upload () {
    WWWForm form = new WWWForm();
    form.AddField("name", name.text.Replace("|", " ").ToString());
    form.AddField("score", (int)(highScore));

    WWW result = new WWW("https://server_name.com/page.php", form );

    yield return result;

    if(!string.IsNullOrEmpty(result.error)) {
        print( "Error : " + result.error );
    } else {
        Debug.Log(result.text);
    }
}
编辑:

好吧,我的错,你的例子在文件上。我不知道WWW正在发展(良好的通信统一…)

因此,我的建议是:继续使用legacy WWW。它工作得非常好


因为这是典型的unity:当他们说一个新功能失效时,它就失效了。

尝试从php返回一个值,然后尝试在unity中读取它并检查是否有错误。同时,最好能提到您正在构建哪个平台并在其上进行尝试。好的,所以我为Linux和Windows构建了这个平台-这两个平台都存在问题。我在Windows机器上运行编辑器(同样的代码也可以从那里运行)。好的。照我上面说的做。在编辑器中运行它,并确保您收到php通过
UnityWebRequest.downloadHandler.text
发送的值。现在,构建它,看看是否可以收到相同的值。还要检查
UnityWebRequest.error
以查看是否有任何错误。在编辑器中没有错误-并且收到了值。我相信我发现了一个问题-在调用upload之后,我加载了下一个场景(不等待协程完成)-这可能是问题的根源。