【发布时间】:2015-02-23 14:22:02
【问题描述】:
我尝试使用以下代码将使用 PUT 方法的文件上传到 http 服务器(Apache Tika)
private static async Task<string> send(string fileName, string url)
{
using (var fileStream = File.OpenRead(fileName))
{
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
var content = new StreamContent(fileStream);
content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
var response = await client.PutAsync(url, content);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
}
在 Main 中,方法是这样调用的:
private static void Main(string[] args)
{
// ...
send(options.FileName, options.Url).
ContinueWith(task => Console.WriteLine(task.Result));
}
作为响应,服务器应返回 HTTP 200 和文本响应(已解析的 pdf 文件)。我已经用 Fiddler 检查了这种行为,就服务器而言它工作正常。
不幸的是,调用 PutAsync 方法后执行完成。
我做错了什么?
【问题讨论】:
标签: c# async-await .net-4.5 dotnet-httpclient