C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 148 を表示中)
■86343 / )  Re[3]: HttpClientでのmultipart/mixed送信
□投稿者/ さえ (3回)-(2018/01/22(Mon) 01:58:36)
はるまきとかげ様、Hongliang様、魔界の仮面弁士様

ご指摘どうもありがとうございます。大変勉強になり、有難いです。
ファイルの操作やヘッダの操作など、基本的な問題で申し訳ありませんが、これから勉強していきたいと思っています。
また、サービス提供元は問合せを受け付けていないようでした。

情報が小出しになってしまいすみませんが、正常に動作するVBAのサンプルが公開されていました。
サンプルと自作C#のパケットキャプチャの結果および修正した自作C#コードを下記に記載します。
APIが返す結果は変わらず「ファイルがありません」となります。

魔界の仮面弁士様にご指摘頂いた通り、Shift_JISのcsvはUTF-8 に再エンコードして送出されているようでしたので、
元のファイルの方をutf-8に変換しています。

サンプルとC#の結果の相違点は、Content-Length(変換方法の問題?)とバウンダリ文字のように見えます。
バウンダリにダブルクォーテーションを付けない形で設定する方法はどうすればよいでしょうか。

何度も申し訳ありませんが、どうぞよろしくお願いいたします。



***正常に動作するサンプルの送出データ***
POST /api/v1/ConvertToWebInput HTTP/1.1
Connection: Keep-Alive
Content-Type: multipart/mixed; boundary=================12345678987654321
Accept: */*
Accept-Language: ja
User-Agent: Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)
Content-Length: 13795
Host: model.app.lowenergy.jp


--================12345678987654321
Content-Disposition: mixed; name="A"
Content-Type: text/csv; charset=utf-8

*CSVの中身


***自作C#の送出データ***
POST /api/v1/ConvertToWebInput HTTP/1.1
Accept-Language: ja
Accept: */*
User-Agent: Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)
Content-Type: multipart/mixed; boundary="================12345678987654321"
Host: model.app.lowenergy.jp
Content-Length: 13793
Connection: Keep-Alive

--================12345678987654321
Content-Disposition: mixed; name="A"
Content-Type: text/csv; charset=utf-8

*CSVの中身


***自作C#コード***
            var files = new List<string>();
            files.Add(@"C:\test\A");
            
            var content = new MultipartContent("mixed", "================12345678987654321");

            foreach (var s in list)
            {
                var fileContent = new StreamContent(File.OpenRead(s));
                fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("mixed")
                {
                    Name = "\"" + Path.GetFileName(s) + "\""
                };
                fileContent.Headers.ContentType = new MediaTypeHeaderValue("text/csv"){ CharSet = Encoding.UTF8.WebName };
                content.Add(fileContent);
            }

            var httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Add("Accept-Language", "ja");
            httpClient.DefaultRequestHeaders.Add("Accept", "*/*");
            httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)");

            string url = @"http://model.app.lowenergy.jp/api/v1/ConvertToWebInput";
            httpClient.DefaultRequestHeaders.ExpectContinue = false;
            HttpResponseMessage response = httpClient.PostAsync(url, content).Result;

            string test = response.Content.ReadAsStringAsync().Result;

返信 編集キー/


管理者用

- Child Tree -