#c# #rest #unity3d #promise
Вопрос:
Использование этой библиотеки https://github.com/proyecto26/RestClient Я хочу получить несколько изображений с сервера s3, а затем выполнить функцию, когда все они будут загружены. У меня есть:
RestClient.Get(url).Then( response => {
byte[] imageBytes = response.Data;
string pathToSaveImage = "/some/example/local/absolute/path/to/image.jpg";
File.WriteAllBytes(pathToSaveImage, imageBytes)
} ).Catch( err => {
Debug.Log(err.Message);
} );
но если я повторю список URL-адресов, как я узнаю, когда все запросы будут выполнены?
Новичок в C# и Unity. Любая помощь будет признательна! Спасибо!
Ответ №1:
Если вам нужно использовать «RestClient», используйте правильный запрос, чтобы получить фотографию. Вы можете использовать следующий код:
var currentRequest = new RequestHelper {
Uri = "https://jsonplaceholder.typicode.com/photos",
Headers = new Dictionary<string, string> {
{ "Authorization", "Other token..." }
},
Params = new Dictionary<string, string> {
{ "param1", "Other value..." }
}
};
RestClient.GetArray<Photo>(currentRequest).Then(response => {
EditorUtility.DisplayDialog("Header", currentRequest.GetHeader("Authorization"), "Ok");
});
Кроме того, если вы загружаете несколько фотографий, попробуйте получить URL-адрес для нескольких фотографий в соответствии с запросом.
Вы можете узнать статус, используя следующее:
currentRequest.UploadProgress; //The progress by uploading data to the server
currentRequest.UploadedBytes; //The number of bytes of body data the system has uploaded
currentRequest.DownloadProgress; //The progress by downloading data from the server
currentRequest.DownloadedBytes; //The number of bytes of body data the system has downloaded
currentRequest.Abort(); //Abort the request manually
Комментарии:
1. Спасибо! Однако у меня есть список<строка> URL-адресов, а не конечная точка, на которой я могу вызвать getArray. Есть ли решение, которое вы можете придумать, которое работает со списком<строка>?
2. @hot_barbara Извините за поздний ответ. Я был в отъезде. Вы можете использовать цикл для своего списка и выполнить итерацию после завершения
DownloadProgress
из состояния запроса.