2010-12-15 3 views
7

이전에 WebClient를 사용한 적은 한번도 없었습니다. 서버의 응답을 확인하여 업로드가 성공했는지 또는 예외가없는 경우 파일을 업로드 된 상태로 둘 수 있는지 여부를 잘 모르겠습니다.WebClient.UploadFile의 응답을 확인하여 업로드가 성공했는지 확인해야합니까?

응답을 확인하려면 어떻게해야합니까? resposeHeaders 속성을 파싱 하시겠습니까?

미리 감사드립니다.

답변

16

UploadFile 메서드는 원격 서버에서 반환 한 응답이 포함 된 byte[]을 반환합니다. 서버가 업로드 요청 (및 오류 조건 (아래 참고 사항 1 참조))에 대한 응답을 관리하는 방법에 따라 해당 응답을 확인해야합니다. 당신은 문자열로 변환하여 문자열 응답을 얻을 수 있습니다 예를 들어,이 콘솔 창에 대한 응답을 작성합니다 :

원격 서버가 HTTP 200 (즉, 성공)보다 전화를 다른 것을 반환하는 경우 말했다
byte[] rawResponse = webClient.UploadFile(url,fileName); 
Console.WriteLine("Remote Response: {0}", System.Text.Encoding.ASCII.GetString(rawResponse)); 

to UploadFile은 WebException을 던집니다. 이것은 귀하의 응용 분야에 가장 적합한 방식으로 귀하가 그것을 잡아서 처리 할 수 ​​있습니다.

그래서 모두 함께

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 
    ... 
} 

나는 HTTP 200 코드 이외를 발급하지 않습니다 파일 업로드 서비스가 예를 들어 주 1, 모든 오류가 서비스하고 이러한 내에서 잡은 것을두고 호출자에게 반환되는 XML 구조로 "파싱"됩니다. 그러면 호출자가 해당 XML을 구문 분석하여 업로드가 성공했는지 확인합니다.

+0

감사합니다. 좋은 설명입니다. 셰어 포인트 사이트를 다룰 예정이므로 일반 웹 서버 응답을 찾을 필요가 있으므로 응답을 확인할 필요가 없습니다. –

2

msdn에서 제공되는 examples에서 응답을 확인하므로 좋은 스타일 일 수 있지만 직접하지는 않으며 아직 화상을 입지는 않습니다.

2

업로드가 200 (또는 200 범위) 이외의 StatusCode를 반환하면 WebClient.UploadFile이 WebException을 발생시켜야합니다.

플러그인으로 여러 파일과 양식 값을 동시에 쉽게 업로드 할 수있는 WebHelper 클래스가 포함 된 BizArk의 코드 참조 라이브러리가 있습니다. 이 프로젝트의 이름은 BizArk입니다.

+0

응답이 나쁜 경우 WebException이 자동으로 발생합니다. –

관련 문제