gpt4 book ai didi

c#-4.0 - 使用 Web API 调用下载文件

转载 作者:行者123 更新时间:2023-12-02 09:10:43 30 4
gpt4 key购买 nike

我正在使用 Web API 下载文件。让我首先介绍一下,这对我来说是一个新领域。如果我直接进入 API 主页,Web API 代码中的下载功能将启动下载。但是,使用来自其他网页的 Web API 调用的响应,我不知道如何检索该文件。我看到很多类似的问题,但没有一个真正有明确的答案。

这是我将下载发送回调用者的代码:

    public HttpResponseMessage GetDownloadFile(string uid, string fileID, string IP_ADDRESS)
{

MemoryStream ms = null;


string sDecryptedUserID = uid;
string sDecryptedFileID = fileID;
string sDecryptedIPAddress = IP_ADDRESS;

var downloadRecord = GetDownLoadRecord(sDecryptedUserID, sDecryptedFileID);
if (downloadRecord != null)
{
ms = ExportFile(downloadRecord, sDecryptedUserID, sDecryptedIPAddress);
if (ms != null)
UpdateDownloadLog(downloadRecord, sDecryptedUserID, sDecryptedIPAddress);
}
//This is where I setup the message.
if (ms != null)
{
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new StreamContent(ms);
result.Content.Headers.ContentType =
new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
return result;
}
else
return new HttpResponseMessage(HttpStatusCode.InternalServerError);
}

要接收消息,我使用以下命令:

        private bool GetDownload(string[] download, string userid, string IPADDRESS)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(uri);

string url = @"api/Download?uid=" + userid + "&fileID=" + download[0] + "&IP_ADDRESS=" + IPADDRESS;

HttpResponseMessage responseParent = client.GetAsync(url).Result;
if (responseParent.IsSuccessStatusCode)
{

//I don't know what to set the returned value to.
StreamContent respMessage = responseParent.Content.ReadAsAsync<StreamContent>().Result;
var byteArray = respMessage.ReadAsByteArrayAsync();
//ExportFile(byteArray, download);
return true;
}
else
return false;

}

我在这里找不到任何说明如何解析返回值的信息。我有很多从 WebAPI 返回数据集的代码,但这让我感到困惑。如果有人可以提供帮助,我将不胜感激。

我找到了这个 JQuery 示例,但我真的想在 C# 中执行此操作。 Jquery Web API Example

最佳答案

试试这个:

    HttpResponseMessage responseParent = client.GetAsync(url).Result;
if (responseParent.IsSuccessStatusCode) {

var byteArray = responseParent.Content.ReadAsByteArrayAsync().Result;

//ExportFile(byteArray, download);
return true;

} else

return false;

...或者看看这个:example它为 HttpContent 创建一个扩展方法以直接保存到文件流。代码看起来像这样更好。

问候

关于c#-4.0 - 使用 Web API 调用下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17868940/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com