Unity发送POST请求时,它不会传递POST数据,因此服务器返回错误(它将获取服务器响应)。我已经看到有几个人有类似的问题,并且通过添加www.chunkedTransfer = false;
来解决此问题,但是,这对我来说不起作用。
我还看到有些人使用WWWForm
而不是IMultipartFormSection
,但是由于它已被弃用,我没有尝试过。
我正在使用PHP,但是我也曾在Perl上尝试过它,但是它也不起作用。当我手动发送POST请求时,一切正常,因此似乎问题出在Unity中。我是Unity新手,所以将不胜感激。我正在使用最新的最新版本2018.2.18f1 Personal。
我的代码与official Unity documentation for sending POST request几乎相同,但显然不起作用。这是我的代码:
C#:
public void Click() {
StartCoroutine(PostRequest("http://127.0.0.1/test.php", "help"));
}
IEnumerator PostRequest(string url, string data) {
List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
formData.Add(new MultipartFormDataSection("data=" + data));
UnityWebRequest www = UnityWebRequest.Post(url, formData);
www.chunkedTransfer = false;
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError) {
Debug.Log(www.error);
} else {
Debug.Log(www.downloadHandler.text);
}
}
PHP:
<?php echo "Server received: " . $_POST["data"]; ?>
答案 0 :(得分:0)
Christoph Lütjen指出,尽管this使用new MultipartFormDataSection("data", data)
,但根据official documentation example应该是new MultipartFormDataSection("field1=foo&field2=bar")
。
将其更改为new MultipartFormDataSection("data", data)
可以解决此问题。