2010-12-15 1 views
7

以前はWebClientを使用したことがなく、アップロードが成功したかどうかを知るためにサーバーからの応答を確認する必要があるかどうか、または例外がない場合にファイルをアップロードすることができるかどうかはわかりません。アップロードが成功したかどうかを知るためにWebClient.UploadFileの応答をチェックする必要がありますか?

回答を確認する必要がある場合、どうすればいいですか? resposeHeadersプロパティを解析しますか?

ありがとうございます。

答えて

16

UploadFileメソッドは、リモートサーバーから返された応答を含むbyte[]を返します。サーバーがアップロード要求(およびエラー条件(下記の注1を参照))に対する応答を管理する方法に応じて、その応答を確認する必要があります。あなたは、例えば、これは、コンソールウィンドウへの応答を書き込みます、それを文字列に変換した文字列の応答を取得することができます。

byte[] rawResponse = webClient.UploadFile(url,fileName); 
Console.WriteLine("Remote Response: {0}", System.Text.Encoding.ASCII.GetString(rawResponse)); 

リモートサーバがHTTP 200(すなわち成功)以外のものを返した場合と、その呼び出しをto UploadFileはWebExceptionをスローします。これはあなたのアプリケーションに最も適した方法であれば、これを捕まえることができます。だから私は、HTTP 200コード以外のものを発行することはありませんすべてのエラーがサービス内でキャッチされ、これらのファイルのアップロードサービスを持っているすべて一緒

try 
{ 
    WebClient webClient = new WebClient(); 
    byte[] rawResponse = webClient.UploadFile(url,fileName); 

    string response = System.Text.Encoding.ASCII.GetString(rawResponse); 

    ... 
    Your response validation code 
    ... 
} 
catch (WebException wexc) 
{ 
    ... 
    Handle Web Exception 
    ... 
} 

注1例としてという置く

呼び出し元に返されるXML構造に「解析」されます。呼び出し側はそのXMLを解析して、アップロードが成功したことを検証します。

+0

ありがとう、素敵な説明。私はSharepointサイトを経由しているので、通常のWebサーバーの応答を見つけることができるので、応答を確認する必要はありません。 –

2

msdnで提供されているexamplesでは、応答が良いスタイルになるようにチェックしていますが、自分でやっていない傾向があり、まだ燃えていません。

2

アップロードが200(または200の範囲)以外のStatusCodeを返す場合、WebClient.UploadFileはWebExceptionを発生させる必要があります。

プラグインとして、複数のファイルとフォーム値を同時に簡単にアップロードできるWebHelperクラスを含むBizArkのコード参照ライブラリがあります。このプロジェクトの名称はBizArkです。

+0

したがって、応答が悪い場合、WebExceptionは自動的にリジッドになりますか? –

関連する問題