2016-09-14 19 views
5

tôi cần thiết lập tùy chỉnh UA và tôi sử dụngThay đổi mặc định User-Agent trong WebView UWP

httpRequestMessage.Headers.Add("User-Agent", "blahblah"); 
theWebView.NavigateWithHttpRequestMessage(httpRequestMessage); 

Nhưng nếu tôi nhấp vào bất kỳ liên kết trên trang UA này bị xóa và thiết lập mặc định UA.

Tôi đã tìm thấy cùng một câu hỏi WebView - Define User-Agent on every request nhưng có thể nó đã được sửa vào năm 1607?

+0

Đây là mẹo lừa đảo: https://gist.github.com/mattdot/3b53af7756c061e06f60623c766f657a – Laith

Trả lời

6

WebView không phải là trình duyệt có mục đích chung, nó có một số "hạn chế" không được hỗ trợ ngay bây giờ. Không có API nào có thể đặt User-Agent mặc định được sử dụng trong mọi yêu cầu. Chúng tôi có thể sử dụng WebView.NavigationStarting event cùng với WebView.NavigateWithHttpRequestMessage method để đặt User-Agent trong mọi yêu cầu.

Để biết thêm thông tin về cách thực hiện việc này, vui lòng tham khảo this answer. Điểm mấu chốt ở đây là loại bỏ handler cho NavigationStarting sự kiện và hủy chuyển hướng trong yêu cầu ban đầu và sau đó thêm các xử lý sau NavigateWithHttpRequestMessage để đảm bảo NavigationStarting sự kiện có thể chụp các yêu cầu tiếp theo như sau:

WebView wb = new WebView(); 
wb.NavigationStarting += Wb_NavigationStarting; 
... 
private void NavigateWithHeader(Uri uri) 
{ 
    var requestMsg = new Windows.Web.Http.HttpRequestMessage(HttpMethod.Get, uri); 
    requestMsg.Headers.Add("User-Agent", "blahblah"); 
    wb.NavigateWithHttpRequestMessage(requestMsg); 

    wb.NavigationStarting += Wb_NavigationStarting; 
} 

private void Wb_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args) 
{ 
    wb.NavigationStarting -= Wb_NavigationStarting; 
    args.Cancel = true; 
    NavigateWithHeader(args.Uri); 
} 

Ngoài ra, bạn đều được chào đón để bình chọn trên UserVoice để chia sẻ phản hồi của bạn.

+0

Cảm ơn bạn! Tôi sẽ thử nó. –

Các vấn đề liên quan