15

別の質問 ( Send a file via HTTP POST with C# ) への回答として投稿されたこのコード サンプルがあります。1つの問題を除いて正常に動作します。HTTP ヘッダーの境界を二重引用符で囲みます。

マルチパート/フォームデータ; 境界="04982073-787d-414b-a0d2-8e8a1137e145"

これは、私が呼び出そうとしている Web サービスを窒息させています。ブラウザにはこれらの二重引用符がありません。.NETにそれらをオフにするように指示する方法が必要です。

private System.IO.Stream Upload(string actionUrl, string paramString, Stream paramFileStream, byte [] paramFileBytes)
{
    HttpContent stringContent = new StringContent(paramString);
    HttpContent fileStreamContent = new StreamContent(paramFileStream);
    HttpContent bytesContent = new ByteArrayContent(paramFileBytes);
    using (var client = new HttpClient())
    using (var formData = new MultipartFormDataContent())
    {
        formData.Add(stringContent, "param1", "param1");
        formData.Add(fileStreamContent, "file1", "file1");
        formData.Add(bytesContent, "file2", "file2");
        var response = client.PostAsync(actionUrl, formData).Result;
        if (!response.IsSuccessStatusCode)
        {
            return null;
        }
        return response.Content.ReadAsStreamAsync().Result;
    }
}
4

3 に答える 3