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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.86343 の関連記事表示

<< 0 >>
■86343  Re[3]: HttpClientでのmultipart/mixed送信
□投稿者/ さえ -(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;
記事No.86305 のレス /過去ログ148より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -