UnityWebRequest不发送POST数据

时间:2018-12-01 18:08:32

标签: c# php unity3d post

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"]; ?>

1 个答案:

答案 0 :(得分:0)

Christoph Lütjen指出,尽管this使用new MultipartFormDataSection("data", data),但根据official documentation example应该是new MultipartFormDataSection("field1=foo&field2=bar")

将其更改为new MultipartFormDataSection("data", data)可以解决此问题。