2011-10-23 7 views
0

HttpWebRequestをC#でbyteArrayをポストするのに使用しようとしています。私は文字列(またはToBase64String)にバイトを変換したくない。私はただbyteArrayをそのままサーバに送りたいと思っています。私のデータは、クライアントがC#でバイナリ配列データをサーバーに投稿する方法

byte[] byteArray = { 0, 1, 5, 4, 0, 1, 55, 0, 1, 5, 4, 0, 1} 

私はポストパラメータで何を定義すべきですか?

request.ContentType = "application/x-www-form-urlencoded"??? or request.ContentType = "application/octet-stream";??? 

私は(ところで、サーバはWampServer(Koana、PHP、MySQLの)である

ありがとう!

答えて

1

これを行うための簡単な方法は次のようになります....私は大きな何かが足りないと思いますWebClient使用する:バイナリデータの場合

byte[] byteArray = { 0, 1, 5, 4, 0, 1, 55, 0, 1, 5, 4, 0, 1}; 

using(WebClient wc = new WebClient()) 
{ 
    wc.UploadData(someURL, byteArray); 
} 

を、あなたは通常、application/octet-stream使用します - これは必須ではありませんD上記WebClientアップロードすなわち、(サーバーに依存します) oesはcontent-typeヘッダーを指定しません。

+0

こんにちは、以下の私の答えをご覧ください。 –

0
byte[] byteArray = { 0, 1, 5, 4, 0, 1, 55, 0, 1, 5, 4, 0, 1} 

using (Stream requestStream = httpWebRequest.GetRequestStream()) { 
    if (requestStream.CanWrite) 
     requestStream.Write(byteArray, 0, postBytes.Length); 
} 
+0

私は問題がサーバー側にあると思う、どちらの方法でも、私は$ _POSTが空であることに気付いている(たとえ私がフィドラーでデータを見ることができても - 7 ...)。私はどこを確認すべきかわかりません... 提案はありますか? –

+0

あなたはあなたのHttpWebRequestを作成するときに次のようなものを含めていますか? 'のHttpRequest =(HttpWebRequestの)WebRequest.Create(URL);' httpRequest.Method = "POST"; ' httpRequest.ContentType = "アプリケーション/ x-www-form-urlencodedで";' ' httpRequest.Timeout = 5000 ; ' – clarkb86

+0

、Convert.ToBase64Stringの有無にかかわらず要求が正常に動作しています。私は、サーバーのDBで文字列(行データ)を見ることができます。問題は、バイナリデータ(アプリケーション/ x-www-form-urlencodedまたはアプリケーション/オクテットストリーム)を送信しようとしているときに、PHPサーバvaribale $ _POSTが空であることです。リクエストクラスでサーバ上でどこに設定されているのかわからないのですか? –

関連する問題