2012-04-01 2 views
0

다음 코드를 사용하여 페이지 게시를 시뮬레이션하고 있습니다. (. 좀 보호 회원을 확장 할 수 있도록 내가 WebClient를 서브 클래스 화하고있어)WebClient.UploadValues ​​()로 페이지 게시 시뮬레이션

public class AuthorizeNetClient : WebClient 
{ 
    public string PostData(string url, FormCollection formData) 
    { 
     byte[] response = UploadValues(url, formData); 
     return Encoding.ASCII.GetString(response); 
    } 
} 

를이 코드는 정직,하지만 난 두 가지 문제가 : 나는 예외의 경우를 얻을 것이다 알고

  1. 을 오류가 있지만 성공하지 못한 HTTP 상태 코드가있는 결과가 여전히 가능하다고 생각합니다. 결과를 구문 분석 할 필요없이 해당 상태 코드를 얻을 수있는 방법이 있습니까?

  2. 또한 실제 페이지 게시물처럼 보이게하려면 여러 헤더를 추가해야합니다. 이 작업을 수행하는 좋은 예와 내가 추가해야하는 헤더의 유형은 무엇입니까?

답변

1

양식 게시에 필요한 유일한 요청 헤더는 'content-type : x-www-form-urlencoded'입니다.

또한 WebClient는 모든 HTTP 상태 코드! = 2xx (즉, 성공)에 대한 예외를 throw하므로 여기에서 확인해야합니다. WebException을 catch하고 e.Status == WebExceptionStatus.ProtocolError인지 확인해야합니다. 이 경우 Exception 객체 (e.Response)에서 HttpWebResponse 객체를 가져 와서 원하는대로 수행 할 수 있습니다.

+0

감사합니다.하지만 콘텐츠 유형 헤더를 설정 중이지만 반환 된 HTML 콘텐츠가 오류를 나타냅니다. ('(14) 리퍼러, 릴레이 응답 또는 영수증 링크 URL이 유효하지 않습니다 .') –