Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
HttpClient - Authentifzierung
pollito
myCSharp.de - Member

Avatar #avatar-3521.gif


Dabei seit:
Beiträge: 211

Themenstarter:

HttpClient - Authentifzierung

beantworten | zitieren | melden

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:[email protected]/?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é
private Nachricht | Beiträge des Benutzers
Papst
myCSharp.de - Experte



Dabei seit:
Beiträge: 404
Herkunft: Kassel

beantworten | zitieren | melden

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().
private Nachricht | Beiträge des Benutzers
pollito
myCSharp.de - Member

Avatar #avatar-3521.gif


Dabei seit:
Beiträge: 211

Themenstarter:

beantworten | zitieren | melden

Danke!

Ja, es ist so: Wenn ich im Browser die URL eingebe, kommt eine Anmeldeaufforderung. Dann handelt sich eben um Basic Authentication.
Zitat
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é
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16224

beantworten | zitieren | melden

Zitat von pollito
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.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
pollito
myCSharp.de - Member

Avatar #avatar-3521.gif


Dabei seit:
Beiträge: 211

Themenstarter:

beantworten | zitieren | melden

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é
private Nachricht | Beiträge des Benutzers
pollito
myCSharp.de - Member

Avatar #avatar-3521.gif


Dabei seit:
Beiträge: 211

Themenstarter:

[Gelöst] HttpClient - Authentifzierung

beantworten | zitieren | melden

@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é
private Nachricht | Beiträge des Benutzers