Para enviar arquivos (textos, binários, imagens, etc.) para um serviço da web REST, é comum ter um código como:
meu_http_request is httpRequest meu_http_request.Method = httpPost meu_http_request.URL = "http://ServeurDestination/UrlWebServiceRest/.../FinURL" meu_http_request.Content = fLoadBuffer("C:\...\FichieraUploade.bin")
RESTSend(meu_http_request)
Esta solução requer carregar na memória o conteúdo do arquivo a ser enviado ao webservice. Portanto, é perfeitamente adequado para um único arquivo, não ultrapassando alguns mega. Por outro lado, quando a transferência for grande, ou se for feita a partir de um dispositivo com memória limitada, outra solução é recomendada. É uma questão de envio "multipartes", com o princípio da forma. De fato, desta forma a transferência com o servidor que hospeda o webservice será gerenciada automaticamente por bloco, sem mudança completa na memória: ApiRest is httpRequest HTTPCreateForm("FORM") HTTPAddParameter("FORM", "parametres","3400") HTTPAddFile("FORM", "fichier_upload","C:\FichieraUploade.bin") ApiRest.URL = "http://ServeurDestination/UrlWebServiceRest/.../FinURL" ApiRest.Method = httpPost ApiRest.ContentType = typeMimeMultiPartForm RETORNO_API_REST is boolean = HTTPSendForm("FORM", ApiRest)
Com esta solução, que se aplica se o aplicativo cliente que consome o serviço da web está no Windows, Android, iOS: - vários arquivos podem ser enviados na mesma solicitação, basta repetir as chamadas HTTPAddFile .
- um acompanhamento da transferência com um medidor é permitido com a propriedade
- ProgressDownload do tipo httpRequest ,
- uma transferência assíncrona é autorizada a partir da versão 26, graças à sintaxe assíncrona da
- função HTTPSendForm .
|