2010-05-11 2 views
6

나는 문자열로 원시 HTTP 응답이있는 경우 :원시 HTTP 응답을 HttpListenerResponse로 구문 분석하는 방법은 무엇입니까?

HTTP/1.1 200 OK
날짜 : 2010년 (화) 5월 11일 그리니치 표준시 07시 28분 30초
만료 : -1
캐시 제어 : 개인, 최대 연령 = 0
콘텐츠 유형 : text/html; charset = UTF-8
서버 : gws
X-XSS- 보호 : 1; 모드 = 블록
연결 :

<!doctype html><html>...</html> 

내가 HttpListenerResponse 객체로 파싱 할 수있는 쉬운 방법이 있나요 가까운? 아니면 적어도 어떤 종류의. NET 개체 그래서 나는 원시 응답으로 일할 필요가 없습니다.

현재 헤더 키/값 쌍을 추출하고 HttpListenerResponse에 설정하고 있습니다. 하지만 일부 헤더는 설정할 수 없으며 응답의 본문을 잘라내어 OutputStream에 써야합니다. 하지만 시체는 gzipped 수, 또는 그것은 아직 일할 수없는 이미지가 될 수 있습니다. 그리고 일부 응답에는 모든 곳에서 임의의 문자가 포함되어있어 인코딩 문제와 유사합니다. 그것은 많은 문제입니다.

SOCKS를 사용하여 HTTP 요청을 보내므로 원시 응답이 표시됩니다. 내가하고있는 프로그램은 기본적으로 Privoxy처럼 SOCKS 프록시를 통해 요청을 라우팅 할 수있는 HTTP 프록시입니다.

답변

1

아마 당신은 WebclientResponseHeaders 특성에보고 싶을 : 그 밤은이 당신을 위해 무엇을 검색 한 경우

WebClient wc = new WebClient(); 
wc.DownloadStringAsync(new Uri("http://www.foo.com")); 

WebHeaderCollection myWebHeaderCollection = myWebClient.ResponseHeaders; 

for (int i=0; i < myWebHeaderCollection.Count; i++)    
    Console.WriteLine ("\t" + myWebHeaderCollection.GetKey(i) + 
         " = " + myWebHeaderCollection.Get(i)); 

을 가르쳐주세요.

+1

흠, 질문을 다시 읽으십시오. 원시 응답을 받고 손으로 응답을 작성해야하는 경우 도움이되지 않을 수도 있습니다 ... –

+0

그래, 현재 HttpListenerResponse.Headers.Set (키, 값). 이는 동일한 것입니다. 그러나 귀하의 회신에 감사드립니다. – Edgar

관련 문제