2009-08-10 2 views
2

응답의 Content-Type을 가져 오는 방법이 있습니까? 아니면 반대로 WebClient를 사용하여 Silverlight에서 보내는 요청의 Content-Type을 설정합니까?C# Silverlight WebClient가 Content-Type 응답을 받습니까?

편집 내가 HTTP 요청을하고 그들을 위해 진행률을 표시 할 수 있어야합니다

. 요청을 일반 모듈로 만들어 내 코드에서 사방에 사용하기 위해 기계를 패키지화하고 싶습니다. 이것은 이미했습니다. 문제는 POST에서 서버에 다른 유형의 데이터를 제출할 때처럼 보입니다. 서버에 데이터가 무엇인지 알려줄 방법이 없습니다 (json, xml, 양식 인코딩, 바이너리)

저는이 문제를 해결할 수 있다고 생각합니다. ? content-type = x를 요청과 함께 전달하고, Content-Type 헤더보다 선호하도록 서버를 설정합니다.

또한 서버가 응답하는 콘텐츠의 종류를 알 수있는 방법이 없습니다. 요청할 때 예상되는 데이터 형식을 전달하여이를 해결할 수 있다고 생각합니다.

사람이 더 나은 솔루션이있는 경우,

/편집

여기 내 처지입니다 :) 목소리를 바랍니다. HttpWebRequest/Response 개체는 요청 진행 상황을 모니터링 할 수있는 내부 인터페이스를 구현합니다. 큰 요청을 원하면 사용자가 다운로드/업로드 상태를 보여주는 진행률 막대를 보게하는 것이 중요합니다.

그래서 HttpWebRequest/Response를 사용하고 있습니다. WebClient 만 남겨 두지 만, 그것에 대해 이상한 점을 발견하고 있습니다.

서브 클래 싱 할 수 없습니다. 실제로 봉인 된 것은 아니지만 생성자는 [SecuritySafeCritical]으로 표시되어 있습니다.이 클래스는 파생 클래스에서 호출 할 수 없다는 것을 의미합니다. 적어도 실패하고 Google에서 실패한 사용자를 찾았지만이 시점에서 잘못 입증하게되어 매우 기쁩니다.

내부적으로 BrowserHttpWebResponse는 추상 헤더 속성을 무시하지 않고 WebClient.ResponseHeaders는 단지 NotImplementedException을 throw하는 m_Response.Headers로 전달합니다.

Content-Type은 ResponseHeaders에도 있을지 모르지만 확인하고 싶습니다.

Silverlight에는 진행 정보 나 Content-Type 정보가 있지만 둘 다 아니라는 불행한 선택이있는 것으로 보입니다.

문서에 따르면 WebClient를 사용하여 나가는 요청에 Content-Type을 설정하는 방법도없는 것처럼 보입니다. Content-Type은 제한된 헤더로 나열됩니다. 나는 실제로 이것을 테스트하지 않았다. 이 오류에 점에 유의하는 흥미 있지만

, 실제로 등, 응답 객체를 전달하고 상태 코드, 콘텐츠 형식에 액세스 할 수 얻을

+0

당신이 성취하려는거야? 당신의 궁극적 인 목표는 무엇입니까? 시도한 방법을 설명했지만 자신이하려는 것을 설명하지 않았습니다. 제가 위에서 말했듯이 –

답변

0

더 쉬운 솔루션/클라이언트/서버 코드가 업로드 휴식이 덩어리로 다운로드하여 한 번에 하나씩 보낼 수 있습니다. 그런 다음 각 덩어리마다 진행률 막대를 업데이트 할 수 있습니다. 물론, 청크 크기가 작을수록 느려질 것입니다.

또한 : 당신은 쿼리 문자열 인수를 통해 콘텐츠 어떤 종류의 서버를 말할 수 있을까?

+0

사실 나는 이런 전략에 넘어갔습니다. 그리고 그것은 일종의 일을합니다. – Eloff

0

당신이 웹 클라이언트와 웹 클라이언트에 DownloadProgressChanged 이벤트를 사용하여 시도 되세요 ?

+0

예, 즉 다운로드 진행 상황에 대한 정보를 얻을 수있는 유일한 방법이 될 것으로 보인다. 그러나 문제는 웹 클라이언트는 진보와 고급 기능을 필요로하는 경우 당신이 정말로 제로 옵션을 사용할 수 있도록 (콘텐츠 유형 등) 고급 아무것도 노출되지 않는 인형에 대 한 인터페이스를 가지고 있습니다. – Eloff

0

서버가 asp.net 인 경우 this 또는 PHP 인 경우 this과 같이 할 수 있습니다. 이러한 솔루션은 업로드 진행 상황에 대한 솔루션이며, 다운로드 진행 상황에 맞게 수정할 수는 있지만 쉽게 수행 할 수는 없습니다.

아이디어는 그들이 ID로 진행 상황을 저장하기 위해 업로드를 수행하는 서버 코드를 재 작성하고 클라이언트 폴링 서버가 현재 진행 상황을 얻을 수 있다는 것입니다.

관련 문제