2012-08-29 2 views
2

Windows Phone 7x 응용 프로그램에 WebBrowser가 내장되어 있습니다. 이 웹 브라우저는 웹 서버를 가리 킵니다. 앱에서 오는 요청과 기본 브라우저 (또는 다른 앱에 포함 된 웹 브라우저)에서 오는 요청을 구분할 수 있어야합니다. 이렇게하기 위해 우리는 WebBrowser에서 오는 모든 HTTP 요청의 User-Agent를 수정하려고합니다.Windows Phone 용 사용자 에이전트 수정 WebBrowser 컨트롤

그러나이 방법은 없습니다. 나의 초기 생각은 단순히 "additionalHeaders"를 추가하는 Navigate 함수를 오버라이드하는 것이었다. 불행하게도 WebBrowser 클래스는 봉인되어 있으므로 옵션은 전혀 옵션이 아닙니다. 나는 자산을 활용할 수 있을지 모르는 자산이나 핸들러에 대해 높거나 낮게 조사했습니다.

요약하면 모든 아웃 바운드 HTTP 요청에 대해 WebBrowser의 User-Agent를 수정하는 방법이 있습니까?

+0

@ 마이클 : 문제의 답을 얻었습니까? 나는 또한 비슷한 포블을 ​​가지고있다. (여전히 답을 찾고 있는가?) 나를 도울 수 있니? – Invincible

+0

@Invincible 아니, 운이 없다. 나중에 의심 스러울지라도, WebBrowser 클래스는 나중에 릴리스 될 예정입니다. 행운을 빈다. –

답변

0

내비게이션 메소드를 호출 할 때 추가 헤더를 통해 사용자 에이전트를 설정하십시오. 세부 사항 here.

+0

고마워요.하지만 이해하기는하지만 브라우저 윈도우에서 사용자가 시작한 후속 요청 (예 : 링크 클릭)에 대한 헤더를 수정하지 않습니다. 위에서 언급 한 것처럼 WebBrowser를 확장하여 모든 탐색 요청을 가로 채려고했지만 불행히도 클래스가 봉인되었습니다. –

2

이 질문, 당신은 항상 웹 브라우저의 탐색 이벤트에 대해이 사용할 수 오래된, 그러나 이것은 누구에게도 소용이 경우에 알고

void wb_Navigating(object sender, NavigatingEventArgs e) 
    { 
     if (!e.Uri.ToString().Contains("!!!")) 
     { 
      e.Cancel = true; 
      string url = e.Uri.ToString(); 
      if (url.Contains("?")) 
       url = url + "&!!!"; 
      else 
       url = url + "?!!!"; 
      wb.Navigate(new Uri(url), null, "User-Agent: " + "Your User Agent"); 
     } 
    } 

당신은 단지 추가 "!!!" 사용자 지정 사용자 에이전트가있는 탐색 용 모든 URL URL에 "!!!"이 포함되어 있지 않으면 클릭 한 링크의 요청이며 WebBrowser가 탐색을 취소하고 사용자 지정 사용자 에이전트와 "!!!"로 다시 이동합니다. 쿼리 문자열에.

2

나는 msbg에 비슷한 접근법을 시도했다. msbg는 메모리에 URL을 두 번씩 저장하는 것을 피하기 위해 저장한다. 그러나이 방법은 POST 데이터를 보존하지 않으므로 도움이되지 않습니다.

List<string> recentlyRequestedUrls = new List<string>(); 

    void wb_Navigating(object sender, NavigatingEventArgs e) 
    { 
     if(!recentlyRequestedUrls.Contains(e.Uri.ToString())) 
     { 
      //new request, reinitiate it ourselves and save that we did to avoid infinite loop. 
      e.Cancel = true; 
      string url = e.Uri.ToString(); 
      recentlyRequestedUrls.Add(url); 
      webBrowser1.Navigate(new Uri(url), null, "User-Agent: Your_User_Agent"); 
     } 
    } 
+0

흥미로운 접근 방법. POST 데이터가 필요 없으며 두 번째 Navigate 매개 변수에 추가 할 수 있습니다. 당신은 그것을 얻는 방법을 알아 내야 할 것입니다 ... – msbg

관련 문제