/// <summary> /// Downloads an file from the specified url to the specified path /// </summary> /// <param name="url"></param> /// <param name="filePath"></param> /// <returns></returns> public FileInfo DownloadFile(string url, string filePath) { string urlValidationError; if (!IsValidURL(url, out urlValidationError)) { throw new ArgumentException(urlValidationError); } HttpWebServiceRequest request = GetRequest(); try { FileStream responseStream; try { responseStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None); } catch (Exception ex) { throw HttpWebServiceException.FileError(url, ex); } request.GetResponse(url, responseStream, FILE_ACCEPT); return(new FileInfo(filePath)); } finally { if (request.ResponseStream != null) { request.ResponseStream.Close(); } } }
/// <summary> /// Callback method for asynchronous requests /// </summary> private void DownloadFileAsyncCompleted(WebRequestAsyncState state) { FileRequestAsyncState requestState = (FileRequestAsyncState)state; FileInfo fileResult = null; if (!requestState.Request.Cancelled && requestState.Error == null) { try { fileResult = new FileInfo(requestState.FilePath); } catch (Exception ex) { requestState.Error = HttpWebServiceException.FileError(requestState.Request.BaseUrl, ex); } } if (requestState.Request.ResponseStream != null) { requestState.Request.ResponseStream.Close(); } requestState.DownloadFileCompleted(new DownloadFileAsyncResult(fileResult, requestState.Error, requestState.Request.Cancelled)); }