Readdy Write

UWP WebRequest: Problem beim lesen einer Webseite bei Weiterleitungen

02.07.2018 (👁10061)


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


0,00 €