我试图从Unity3D向我的网络服务器发出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二进制文件的机器相同) - 我在编辑器中没有任何问题。
答案 0 :(得分: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);
}
}
修改:
好吧,我的坏,你的例子是在doc上。我不知道WWW正在发展(很好的沟通团结......)。
所以我的建议是:继续使用传统的WWW。它的工作非常好。
因为这是经典的统一:当他们说一个新功能出局时,就会崩溃。