Unter Windows kann man mit zwei Weisen auf eine Webseite zugreifen.
Es gibt den Àlteren WebRequest und das neuere HttpClient.
Unter WPF verwendet man oft das WebRequest, weil dieser Zugriff auch ftp-Seiten erlaubt. Beim Wechsel von WPF auf UWP hÀngt sich der WebRequest aber leider sehr oft auf und bereitet oft Probleme.
1) UWP-Webrequest: Synchroner Zugriff
Fehlerbeschreibung:
Beim Zugriff auf eine Webseite mit WebRequest erscheint im Synchronen Modus die Fehlermeldung:
The operation was canceled |
Ursache:
ZunĂ€chst unbekannt⊠allerdings zeigt es wahrscheinlich auf eine Weiterleitung der Webseite hin. Wenn zum Beispiel eine URL Adresse mit dem / endet, leiten die Webseiten die Seite aus lesbarkeitsgrĂŒnden intern um.
Name |
Value |
Type |
|
âą |
ex |
{System.OperationCanceledException: The operation was canceled. at System.Net.HttpWebRequest.GetResponse() at robot_ComputerFutures.MainPage.<Web_Get_HtmlDocument>d__6.MoveNext()} |
System.Exception {System.OperationCanceledException} |
ⶠCancellationToken |
IsCancellationRequested = true |
System.Threading.CancellationToken |
|
ⶠData |
{System.Collections.ListDictionaryInternal} |
System.Collections.IDictionary {System.Collections.ListDictionaryInternal} |
|
HResult |
-2146233029 |
int |
|
HelpLink |
null |
string |
|
ⶠInnerException |
null |
System.Exception |
|
Message |
"The operation was canceled." |
string |
|
Source |
"System.Net.Requests" |
string |
|
StackTrace |
" at System.Net.HttpWebRequest.GetResponse()\r\n at robot_ComputerFutures.MainPage.<Web_Get_HtmlDocument>d__6.MoveNext()" |
string |
|
ⶠTargetSite |
{System.Net.WebResponse GetResponse()} |
System.Reflection.MethodBase {System.Reflection.RuntimeMethodInfo} |
2) UWP-Webrequest: Asynchroner Zugriff
objRequest.GetResponseAsync
Beim Verwendern der Asynchronen Methode springt der Cursor zwischen beiden Aufrufen im Loop und behindert die Anwendung.
//* get the HTML Document of a website-URL try { //-< init >- //< WebRequest and Response > WebRequest objRequest = WebRequest.Create("https://www.computerfutures.com/de/job/Project-Manager-39"); objRequest.Timeout = 15; WebResponse objResponse = null; try { objResponse = await objRequest.GetResponseAsync(); } catch (Exception ex) { clsSys.show_Message(ex.Message); return null; }
//</ WebRequest and Response >
//< Stream and Reader > Stream objDataStream = objResponse.GetResponseStream(); StreamReader TextReader = new StreamReader(objDataStream); //</ Stream and Reader > //-</ init >-
|
Problem:
3) UWP: webRequest-> Einstellung Redirect
AllowAutoRedirect in UWP
Ursache schein wohl zu sein, dass die Webseite einen Redirect macht.j
Allerdings hat der WebRequest in UWP keine Einstellung mehr fĂŒr das Verhalten von Redirkt
//< WebRequest and Response > sURL = "https://www.computerfutures.com/de/job/Project-Manager-39"; WebRequest objRequest = WebRequest.Create(sURL); objRequest.AllowAutoRedirect = true; //*not in UWP objRequest.Timeout = 15; WebResponse objResponse = null; try { objResponse = await objRequest.GetResponseAsync(); } catch (Exception ex) { clsSys.show_Message(ex.Message); return null; } |
UWP: Universal Windows Platform
WPF: Windows PrÀsentation Foundation