UnityWebRequest.downloadHandler.text пуст, даже если метод POST возвращает ответ - PullRequest
0 голосов
/ 12 января 2019
  • Я делаю POST API-вызов на мой сервер, используя UnityWebRequest (у меня есть версия Unity 2017.4.0f1)
  • Я отправляю некоторые элементы данных в теле запроса на сервер, который вставляет в мою БД и возвращает тело ответа, которое является строкой json
  • Я использую UnityWebRequest.downloadhandler.text для чтения ответного сообщения, но это пусто, хотя элементы данных вставляются в мою БД. request.downloadHandler.data.Length также дает мне 0
  • Выполнение одного и того же звонка через Почтальон возвращает мне соответствующий ответ (как и использование HTTPWebRequest и чтение ответа через потоковый ридер)

Это фрагмент кода, который у меня есть для него:

UnityWebRequest request=new UnityWebRequest(endpoint,"POST");
request.SetRequestHeader("Content-Type","application/json");
request.SetRequestHeader("host",host);
request.SetRequestHeader("X-Amz-Date",dateTime);
request.SetRequestHeader("Authorization",authorizationHeader);

request.uploadHandler=(UploadHandler)new 
UploadHandlerRaw(Encoding.UTF8.GetBytes(requestParameter));

request.chunkedTransfer=false;
request.downloadHandler=new DownloadHandlerBuffer();
request.SendWebRequest();
print(request.downloadHandler.text);

Пожалуйста, посоветуйте, что я здесь делаю неправильно ...

1 Ответ

0 голосов
/ 12 января 2019

Вам нужно дождаться загрузки результатов, прежде чем вы сможете что-либо с ним сделать. Веб-запросы асинхронные!

Как правило, вы используете Coroutine для этого, как

public IEnumerator LoadData()
{
    // ......
    // all your code goes here, up to the SendWebRequest line

    // then you yield to wait for the request to return
    yield return request.SendWebRequest();

    // after this, you will have a result
    print(request.downloadHandler.text);
}

Запустите эту сопрограмму так:

StartCoroutine(LoadData());

Дополнительные примеры в ответе на этот вопрос: Отправка http-запросов в C # с Unity

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