2

MVCコントローラーへのPOSTを実行する必要があるコンソールアプリケーションを作成しています。WebClientクラスを使用してPOSTを実行しています。しかし、メッセージ本文に配列を追加する方法を理解するのに苦労しています。

単純なパラメーターの場合、これを行うと機能するようです。

         using (var client = new WebClient())
        {

            var values = new NameValueCollection 
            { 
                { "userName", "userName" },
                { "password", "passwordGoesHere"}

            };
            byte[] responseArray = client.UploadValues(String.Format("{0}/Mobile/StartSession", serverAddress), values);
            Debug.WriteLine(String.Format("\r\nResponse received was :\n{0}\n", Encoding.ASCII.GetString(responseArray)));

        }

WebClientを使用するときに(他のメソッドの1つを呼び出すために)メッセージ本文で配列を渡す方法を見つけようとしていました。私はこの解決策に出くわしました:WebClient(C#/。net)で配列をPOSTする

ソリューションは実際には(メッセージ本文ではなく)クエリ文字列でパラメータを渡すようです。MVCコントローラーのHttpPostメソッドはまだ正しい情報を受信して​​いるため、これはどのような場合でも機能するようです。ただし、別の方法では、画像をバイトの配列として渡す必要があります。これは大きすぎてクエリ文字列に渡すことができないため、呼び出しは失敗します。

したがって、私の質問は、上記で提供したコードを使用して、そこにも配列を追加するにはどうすればよいかということです。たとえば、バイトの配列だけでなく、文字列の配列もあります。

誰かが私に解決策を提供してくれるなら、それは大いにありがたいです、あるいは私が私の考えに間違っているならば、私に知らせてください。

ありがとう

4

1 に答える 1

1

バイト配列を使用する代わりに、ファイル入力からブラウザからファイルがアップロードされるのと同じ方法でファイルを POST する必要があります。このようにして、転送されたバイト数を節約できますが、WebClient の代わりに HttpWebRequest を使用する必要があります。このソリューションの詳細は次のとおりです。

HTTPWebrequest でファイルをアップロードする (multipart/form-data)

バイトを「multipart/form-data」コンテンツ タイプとしてアップロードします。サーバーでは、Request.Files コレクションでバイト ストリームを受け取ります。

于 2012-06-06T10:45:57.663 に答える