UnityWebRequest не отправляет данные POST - PullRequest
0 голосов
/ 01 декабря 2018

Когда Unity отправляет запрос POST, он не передает данные POST, поэтому сервер возвращает ошибку (он получает ответ сервера).Я видел, что у некоторых людей была похожая проблема, и она была исправлена ​​путем добавления www.chunkedTransfer = false;, однако, это не работает для меня.

Я также видел, что некоторые люди вместо этого используют WWWFormиз IMultipartFormSection, но я не пробовал, потому что он устарел.

Я использую PHP, но я также пробовал это с Perl, и он тоже не работал.Когда я вручную отправляю POST-запрос, все работает нормально, поэтому проблема заключается в Unity.Я новичок в Unity, поэтому любая помощь будет принята с благодарностью.Я использую текущую последнюю версию, 2018.2.18f1 Personal.

Мой код почти такой же, как официальная документация Unity для отправки запроса POST , но, очевидно, он не работает,Вот мой код:

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 голосов
/ 01 декабря 2018

Кристоф Лютьен указал, что согласно это должно быть new MultipartFormDataSection("data", data), несмотря на пример официальной документации с использованием new MultipartFormDataSection("field1=foo&field2=bar").

Изменение на new MultipartFormDataSection("data", data) исправило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...