Я имею дело со сторонним API, который настаивает на том, чтобы двоичный запрос на загрузку файла был отформатирован без Content-Type
значения заголовка multipart/form-data
и со следующими заголовками:
Content-Type: application/octet-stream
Content-Disposition: filename*=UTF-8''file.zip
HttpRequestMessage
и HttpContent.Headers.ContentDisposition.DispositionType
не позволят мне достичь этого либо потому, что я не могу установить требуемые значения, либо они устанавливаются автоматически.
Я принимаю, что этот API не можетследовать стандартам HTTP, но это не мое, и я не имею на это никакого влияния.
Моя попытка, которая не работает
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.ExpectContinue = false;
FileStream fs = new FileStream(@"e:\dev\TestHalfB.docx", FileMode.Open);
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, <Uri>);
HttpContent fc = new StreamContent(fs);
var mpContent = new MultipartFormDataContent();
mpContent.Add(fc);
fc.Headers.ContentType = MediaTypeHeaderValue.Parse("application/octet-stream");
req.Content = fc;
fc.Headers.ContentDisposition.DispositionType = "filename*=UTF-8''TestHalfB.docx";
using (var response = await client.SendAsync(req))
{
response.EnsureSuccessStatusCode();
var resp = await response.Content.ReadAsStringAsync();
}
fs.Close();
}
Кто-нибудь знает о API более низкого уровня, который я мог бы использовать или иметь? какие-нибудь предложения?
Итак, суть в том, как мне установить заголовок Content-Disposition
на желаемое значение.