Laden...

HttpClient - Authentifzierung

Erstellt von pollito vor 2 Jahren Letzter Beitrag vor 2 Jahren 335 Views
pollito Themenstarter:in
314 Beiträge seit 2010
vor 2 Jahren
HttpClient - Authentifzierung

Hallo,

ich habe zu 99,99% nichts mit Zugriff aufs Internet zu tun, daher fällt es mir etwas schwer, den richtigen Einstieg zu finden.

Ich muss den Inhalt einer Seite auslesen und im Abhängigkeit vom Ergebnis eine Seite aufrufen, die passwortgeschützt ist. Das Auslesen der Seite funktioniert ohne nennenswerte Probleme – dazu verwende ich HttpClient:

static string GetContent(string IP)
{
	using (var client = new HttpClient())
	{
		var result = client.GetAsync(IP).Result.Content.ReadAsStringAsync().Result;

		int start	= result.IndexOf("<body>") + "<body>".Length;
		int length	= result.IndexOf("</body>") - start;

		return result.Substring(start, length);
	}
}

Nun möchte ich in Abhängigkeit des Ergebnisses folgenden Befehl absetzen:

https://benutzername:passwort@internetseite.tld/?result=123

Im Browser funktioniert das mit dieser Syntax problemlos: Der Wert "123" wird richtig verarbeitet.

Wie mache ich das mit dem HttpClient am sinnvollsten?

Schonmal Danke und liebe Grüße

René

P
441 Beiträge seit 2014
vor 2 Jahren

Das sollte Basic Authentication sein - hoffe ich 🙂
Kommt, wenn du im Browser versuchst das aufzurufen eine Anmeldeseite vom Browser (als Popup)?

Falls ja, dann ist das, was der Browser macht wenn du User und PW vor der URL mit angibst Basic Authentication. Der Browser erzeugt für deinen Request einen Authentication Header mit Wert $"{user}:{pass}" als Base64 kodierten Wert.

P.S.: Auf Result zugreifen solltest du vermeiden. Wenn du await nicht verwenden kannst, nimm GetAwaiter().GetResult().

pollito Themenstarter:in
314 Beiträge seit 2010
vor 2 Jahren

Danke!

Ja, es ist so: Wenn ich im Browser die URL eingebe, kommt eine Anmeldeaufforderung. Dann handelt sich eben um Basic Authentication.

P.S.: Auf Result zugreifen solltest du vermeiden. Wenn du await nicht verwenden kannst, nimm GetAwaiter().GetResult().

Auch danke für den Hinweis.

Nun muss ich schauen, wie man die Authentifizierung implementiert.

Vielen Dank!

René

16.806 Beiträge seit 2008
vor 2 Jahren

Nun muss ich schauen, wie man die Authentifizierung implementiert.

Einfach in die Dokumentation schauen, da sind Beispiele.
Ebenso steht dort relativ deutlich der Hinweis, dass man den HttpClient nicht dauernd neu instanziieren soll - und warum (was Du aber hier im Code tust).

Hinweis: Username und Passwort in der URL ist ein Browser-Feature; kein HTTP Feature.
Darfst natürlich so auf Code Ebene nicht machen.

pollito Themenstarter:in
314 Beiträge seit 2010
vor 2 Jahren

Ich habe die Stelle in der Doku gefunden und sie mir angeschaut. Darauf hin habe ich den Code entsprechend geändert. Jetzt schaue ich mir die Beispiele an und versuche ich mich an die Authentifizierung.

Vielen Dank!

René

pollito Themenstarter:in
314 Beiträge seit 2010
vor 2 Jahren
[Gelöst] HttpClient - Authentifzierung

@Papst und @Abt
Nochmals Danke für die Unterstützung! Das Programm funktioniert nun und dieser Thread kann geschlossen bzw. als erledigt markiert werden.

René