UWP

2016-08-26 13 views
6

में कस्टम वेबव्यू शीर्षलेख सेट करें यह अन्य similar प्रश्नों के डुप्लिकेट प्रतीत होता है लेकिन वे पुराने धागे हैं और Windows UWP ऐप्स के लिए विशिष्ट नहीं हैं।UWP

मैं वेबव्यू में कस्टम हेडर सेट करने में असमर्थ हूं इसलिए वेबव्यू में लोड किए गए यूआरएल मेरे लिए काम कर सकते हैं।

मैंने हेडर के साथ एचटीपी क्लाइंट/वेबरक्वेट का उपयोग करने जैसे समाधान देने वाले कई फ़ोरम देखे हैं, लेकिन यह मेरे मामले में काम नहीं करता है, वेब पता उपयोग रीडायरेक्शन के लिए जावास्क्रिप्ट का उपयोग करता है और पुनर्निर्देशन से पहले इसे सही तरीके से लोड करने के लिए कुछ कस्टम हेडर की आवश्यकता होती है।

भी WebView.NavigateWithHttpRequestMessage पोस्टबैक के रूप में इतना उपयुक्त नहीं है और मुझे web View में जावास्क्रिप्ट रीडायरेक्ट किए गए URL सहित प्रत्येक अनुरोध के लिए हेडर की आवश्यकता है।

मैं Xamarin.Droid प्रोजेक्ट में कस्टम हेडर सेट करने में सक्षम हूं, प्रस्तुतकर्ताओं का उपयोग करके मुझे यूडब्ल्यूपी के लिए कोई समाधान नहीं मिला।

उत्तर

6

यूनिवर्सल विंडोज 10 प्लेटफार्म पर, WebView.NavigateWithHttpRequestMessage विधि सही तरीका है।

एक। वेब अनुरोध में जावास्क्रिप्ट पुनर्निर्देशित यूआरएल सहित प्रत्येक अनुरोध के लिए मुझे हेडर की आवश्यकता है।

बी। इस रूप में हेडर OnWebViewNavigationStarting विधि कई बार कहा जाता है और अनुप्रयोग System.StackOverflowException त्रुटि के साथ स्वचालित रूप से दुर्घटनाओं करने के बाद अपनी समस्या को हल नहीं किया

यह है कि अगर हम में नेविगेशन करना होगा अनंत नेविगेशन की वजह से है NavigationStarting घटना। हम सच करने के लिए WebViewNavigationStartingEventArgs.Cancel संपत्ति की स्थापना द्वारा इस घटना के लिए कोई हैंडलर में नेविगेशन रद्द कर देना चाहिए।

और हम जोड़ने/ध्यान से NavigationStarting घटना के लिए हैंडलर को दूर करने की जरूरत है।

कोड का नमूना:

enter image description here

मैं अपने UWP साझा:

private void NavigateWithHeader(Uri uri) 
    { 
     var requestMsg = new Windows.Web.Http.HttpRequestMessage(HttpMethod.Get, uri); 
     requestMsg.Headers.Add("User-Name", "Franklin Chen"); 
     wb.NavigateWithHttpRequestMessage(requestMsg); 

     wb.NavigationStarting += Wb_NavigationStarting; 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     NavigateWithHeader(new Uri("http://openszone.com/RedirectPage.html")); 
    } 

    private void Wb_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args) 
    { 
     wb.NavigationStarting -= Wb_NavigationStarting; 
     args.Cancel = true;//cancel navigation in a handler for this event by setting the WebViewNavigationStartingEventArgs.Cancel property to true 
     NavigateWithHeader(args.Uri); 
    } 

स्क्रीनशॉट Fiddler में लॉग जानकारी है, दूसरा लाल आयत में अनुरोध रिकॉर्ड कस्टम हेडर शामिल here में नमूना, आप आसानी से अपने एक्समरिन यूडब्ल्यूपी ऐप में एकीकृत कर सकते हैं।

+0

हाय @ फ्रैंकलिन के साथ क्रैश हो जाता है, क्या आप कृपया एक और प्रश्न देखें http: //stackoverflow.com/questions/39159834/how-to- प्रमाणीकरण-uwp-app-using-current-windows-loggedin-user/ – Vishnu

+0

@ विष्णु मैं समय की जांच करूँगा यदि मेरे पास समय है :) –

1
Xamarin टैग के साथ

, ऐसा लगता है Xamarin.Forms के साथ इस का उपयोग कर रहे हैं और इसलिए नीचे जवाब Xamarin.Forms के संबंध में है लगता है। हालांकि, कोड यूडब्ल्यूपी में वेबव्यू के लिए भी सच है।

आप WebView के लिए एक कस्टम रेंडरर बनाने की कोशिश कर सकते हैं और फिर एक ही WebView.NavigateWithHttpRequestMessage का इस्तेमाल कर रही प्रयास करें।

आप इस तरह हेडर स्थापित करने की कोशिश कर सकते नेविगेट करने से पहले:

var requestMsg = new Windows.Web.Http.HttpRequestMessage(HttpMethod.Get, new Uri("https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending")); 
requestMsg.Headers.Add("User-Name", "AnubhavRanjan"); 
Control.NavigateWithHttpRequestMessage(requestMsg); 

उरी के ऊपर अपनी आवश्यकता के आधार पर स्थापित किया जा सकता।

मामले में अनुरोध कई बार हो रहा है, तो आप हमेशा NavigationStarting घटना के लिए प्रतिनिधि की स्थापना की और विधि में इसे संभाल कर सकते हैं।

Control.NavigationStarting += OnWebViewNavigationStarting 
+0

यह मेरे मुद्दे को हल नहीं करता है क्योंकि हेडर सेट करने के बाद 'ऑनवेब व्यूविगेशन स्टार्टिंग' विधि को कई बार कहा जाता है और ऐप स्वचालित रूप से 'सिस्टम.स्टैक ओवरफ्लो एक्सेप्शन' त्रुटि – Vishnu

संबंधित मुद्दे