以前はWebClientを使用したことがなく、アップロードが成功したかどうかを知るためにサーバーからの応答を確認する必要があるかどうか、または例外がない場合にファイルをアップロードすることができるかどうかはわかりません。アップロードが成功したかどうかを知るためにWebClient.UploadFileの応答をチェックする必要がありますか?
回答を確認する必要がある場合、どうすればいいですか? resposeHeadersプロパティを解析しますか?
ありがとうございます。
以前はWebClientを使用したことがなく、アップロードが成功したかどうかを知るためにサーバーからの応答を確認する必要があるかどうか、または例外がない場合にファイルをアップロードすることができるかどうかはわかりません。アップロードが成功したかどうかを知るためにWebClient.UploadFileの応答をチェックする必要がありますか?
回答を確認する必要がある場合、どうすればいいですか? resposeHeadersプロパティを解析しますか?
ありがとうございます。
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を解析して、アップロードが成功したことを検証します。
msdnで提供されているexamplesでは、応答が良いスタイルになるようにチェックしていますが、自分でやっていない傾向があり、まだ燃えていません。
アップロードが200(または200の範囲)以外のStatusCodeを返す場合、WebClient.UploadFileはWebExceptionを発生させる必要があります。
プラグインとして、複数のファイルとフォーム値を同時に簡単にアップロードできるWebHelperクラスを含むBizArkのコード参照ライブラリがあります。このプロジェクトの名称はBizArkです。
したがって、応答が悪い場合、WebExceptionは自動的にリジッドになりますか? –
ありがとう、素敵な説明。私はSharepointサイトを経由しているので、通常のWebサーバーの応答を見つけることができるので、応答を確認する必要はありません。 –