duanluangua8850
duanluangua8850
2018-12-01 18:08

UnityWebRequest不发送POST数据

已采纳

When Unity sends the POST request it doesn't pass the POST data, so the server returns an error (it gets the server response). I've seen that several people had a similar issue and it got fixed by adding www.chunkedTransfer = false;, however, that doesn't work for me.

I've also seen that some people use WWWForm instead of IMultipartFormSection, but I haven't tried it because it is deprecated.

I'm using PHP, but I've also tried it with Perl and it didn't work either. When I manually send a POST request everything works normally, so it seems the issue is in Unity. I'm new to Unity, so any help would be appreciated. I'm using the current latest version, 2018.2.18f1 Personal.

My code is pretty much the same as the official Unity documentation for sending POST request, but apparently it doesn't work. Here is my code:

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条回答

  • douji6940 douji6940 3年前

    Christoph Lütjen pointed out that according to this it should be new MultipartFormDataSection("data", data), despite the official documentation example using new MultipartFormDataSection("field1=foo&field2=bar").

    Changing it to new MultipartFormDataSection("data", data) fixed the issue.

    点赞 评论 复制链接分享