2017-08-01 131 views
0

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

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

if(isset($_POST['name']) || isset($_POST['score'])) 
{ 
    $name = $_POST['name']; 
    $score = $_POST['score']; 
    .... 
} 

,团结/ 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二进制文件的机器相同),并且在编辑器中我没有任何问题。

+0

尝试从php返回一个值,然后尝试在Unity中读取它并检查是否有错误。同时,最好能提一下你正在构建的平台并试用这个平台。 – Programmer

+0

没错,所以我为Linux和Windows构建了这个版本 - 两者都存在问题。我在Windows机器上运行编辑器(并从那里运行相同的代码)。 – Zgragselus

+0

好的。做我上面所说的。在编辑器中运行它,并确保您收到来自php的'UnityWebRequest.downloadHandler.text'的值。现在,构建它并查看是否可以收到相同的值。同时检查'UnityWebRequest.error'以查看是否有任何错误。 – Programmer

回答

1

我甚至不明白这是怎么工作的编辑器内...

你没有关注在文档中描述的方法:你不必

https://docs.unity3d.com/ScriptReference/WWWForm.html

完全可以使用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正在发展(尼斯沟通团结......)。

所以在这里,我的建议是:继续使用传统的WWW。它工作得很好。

因为这是经典的统一:当他们说一个新功能出来时,它已经坏了。