Unity 2019.2.1f1
我已经研究了尽可能多的其他解决方案,但似乎没有一个解决我的问题。
使用UnityWebRequest或WWW将WWWForm发送到php时,永远不会读取表单数据。
这是我使用UnityWebRequest的C#代码:
WWWForm formData = new WWWForm ();
formData.AddField ("firstname", "firstname");
UnityWebRequest www = UnityWebRequest.Post (URL, formData);
//www.chunkedTransfer = false; //<- Tested with this on and off and no difference
yield return www.SendWebRequest ();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log (www.error);
}
else
{
Debug.Log ("Form upload complete!");
Debug.Log (www.downloadHandler.text);
}
这是PHP文件的样子:
<?php
$firstname = $_POST['firstname'];
echo "HELLO".$firstname."!!!!";
?>
我也尝试使用WWW的旧方法:
WWWForm formData = new WWWForm ();
formData.AddField ("firstname", "firstname");
WWW www = new WWW("http://www.connorwaplington.co.uk/test.php",formData);
yield return www;
Debug.Log (www.text);
我从所有这些输出中获得的输出是:“ HELLO !!!!”,而不是“ HELLOfirstname !!!!”。
我已经通过从HTML文件发送表单来测试了PHP代码,并且效果很好。
答案 0 :(得分:1)
尝试以下代码,并阅读this有关UnityWebRequest的Unity文档
private void Start()
{
StartCoroutine(GetRequest(url));
}
private IEnumerator GetRequest(string uri)
{
var formData = new WWWForm();
formData.AddField("firstname", "firstname");
using (var webRequest = UnityWebRequest.Post(uri, formData))
{
yield return webRequest.SendWebRequest();
string[] pages = uri.Split('/');
int page = pages.Length - 1;
if (webRequest.isNetworkError)
{
Debug.Log(pages[page] + ": Error: " + webRequest.error);
}
else
{
Debug.Log(pages[page] + ":\nReceived: " + webRequest.downloadHandler.text);
}
}
}
答案 1 :(得分:0)
感谢所有对此提供帮助的人,您的所有答案都是正确的。 URL必须是HTTPS而不是HTTP。我的坏事:/
答案 2 :(得分:0)
我复制了您的代码并执行了以下操作:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class pp : MonoBehaviour
{
bool runReuqest = true;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (runReuqest)
StartCoroutine("runRquest");
}
IEnumerator runRquest() {
runReuqest = false;
// Your Code no changes
WWWForm formData = new WWWForm();
formData.AddField("firstname", "firstname");
UnityWebRequest www = UnityWebRequest.Post("http://my-ip/j.php", formData);
//www.chunkedTransfer = false; //<- Tested with this on and off and no difference
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError) {
Debug.Log(www.error);
} else {
Debug.Log("Form upload complete!");
Debug.Log(www.downloadHandler.text);
}
}
}
我得到的日志如下:
Log:
Form upload complete!
UnityEngine.Debug:Log(Object)
HELLOfirstname!!!!
UnityEngine.Debug:Log(Object)
检查你的代码是否在某处搞砸了,或者使用上面的作为指导。
编辑 1 我没有去检查以前的答案,但它似乎对我也有用。 j.php: 收到:HELLOfirstname!!!!
您可能遗漏了其他东西。