2016-09-10 3 views
0

異なる形式のファイルを変換するthis APIを使用しようとしています。要求の一部として、ファイルをバイナリ形式で取得します。私はそれがC#になるとどういうことかを正確に把握しようとしています。私が読んだことはすべて、バイト配列を使用することを指しているが、これまでは機能していない。ファイルをバイナリ形式に変換してPOST要求ペイロード内でファイルを送信する方法

基本的には、ドキュメントをバイナリに変換してから、その生データを使用して、実際のP​​OSTリクエストを送信するシステムの別の部分にプラグインする必要があります。

APIをよりよく理解するために、エンドポイントをテストしてリクエストペイロードを表示しました。フィドラーはありませんが、それは(それがASCIIとしてバイトを解釈しようとし、おそらくので)ちんぷんかんぷんだ

Request Payload Screenshot

enter image description here Chromeはファイルフィールドの一部として送信されます生データを表示しません。

私はちょっと混乱しています。要求ペイロードのフォームデータオブジェクトの目的のために、私がC#で持っているファイルに何をする必要がありますか?

80753420060800033022316421010890100325001908291671111101161011101169584121112101115934612010910832162424016002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:

DocumentInfo di = this.BoundEntryInfo as DocumentInfo; 
string contentType = "application/msword"; 
string binaryValue; 

using (DocstarReadStream filestream = di.ReadDoc(out contentType)) //open a stream to the word document in the other system 
{ 
    using (MemoryStream mstream = new MemoryStream()) 
    { 
     filestream.CopyTo(mstream); 
     binaryValue = string.Join("", mstream.ToArray()); 
    } 
} 

結果binaryValue文字列は、このような値を持っている:私は(私はそのシステムのAPIを使用して、別のシステムからファイルにアクセスしています)、これを試してみましたしかし0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018014820311019448166924714925015145183859823216217042213962150458223372412328625314619918825419019 ...

、私は、データが何らかの形で間違ってフォーマットされていると仮定していますので、不正な要求エラーでPOSTリクエストのペイロード結果のファイルフィールドの値としてこれを使用して(それが「変換エラー」と言います)。

答えて

1

バイト配列を文字列に変換して本文として送信する代わりに、選択したHttpClientを介して送信されるリクエストストリームにバイトを書き込む必要があります。コンテンツタイプのエンコーディングは、生のバイナリデータをペイロードとして送信することを期待しており、文字列の解釈をどうすればよいかわかりません。

これは、フィドラーのデータがぎこちないように見える理由です。これは、あなたが疑うように、バイナリデータのテキスト表現です。

+0

ええ、私はWebClientを使って動作させましたが、それはより賢明なアプローチで終了しました。 –

関連する問題