所以,我被一些事情难住了,我尽我所能把它降到最低限度,但否则就完成了。我正在使用 C# 工作。我有一个 C#.net WebAPI 项目和一个 C#.net WPF 应用程序作为客户端。
在客户端,我向控制器发送请求以获取服务器上的 zip 文件(我的同一台本地主机计算机,以便我可以测试/调试这两个部分)。这是代码
private static void SamplePost()
{
var myURL = "http://localhost:52575/MySvc/GetZipFromWebAPI";
var request = WebRequest.Create(myURL);
request.Method = "POST";
var data = System.Text.Encoding.ASCII.GetBytes("test string");
request.Method = "POST";
request.ContentType = "text/plain";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
}
现在,在 WebAPI 项目中,我有控制器和公共方法,除了尝试返回固定的已知 zip 文件之外什么也不做。
public HttpResponseMessage GetZipFromWebAPI()
{
var fileToSendBack = @"C:\Users\Public\Sample.zip";
var fileBytes = System.IO.File.ReadAllBytes(fileToSendBack);
var response = new HttpResponseMessage(HttpStatusCode.OK);
var oneContent = new ByteArrayContent(fileBytes);
oneContent.ReadAsByteArrayAsync();
response.Content = oneContent;
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/zip");
return response;
}
因此,我尝试像发送请求并返回响应一样简单。经过我多次不同的尝试,我得到的最好结果是文件大小正确(大约 12k zip 文件),但当我收到响应时客户端没有 ZIP。
无论我遗漏/误解了什么部分,如果能解决就太好了。我已经浏览了许多显示一侧或另一侧的帖子,但即使使用这些帖子,也没有得到我认为应该简单的东西。
Web-API 端缺少的一件事是方法和参数属性 类似的东西
[HttpPost]
public HttpResponseMessage GetZipFromWebAPI([FromBody] string data)