Ich versuche, eine Authentifizierungsanforderung zu durchlaufen, die die "grundlegende Authentifizierungsanforderung" nachahmt, die wir beim Einrichten von IIS für dieses Verhalten gewohnt sind.
Die URL lautet: https://telematicoprova.agenziadogane.it/TelematicoServiziDiUtilitaWeb/ServiziDiUtilitaAutServlet?UC=22&SC=1&ST=2
(Warnung: https!)
Dieser Server wird unter UNIX und Java als Anwendungsserver ausgeführt.
Dies ist der Code, mit dem ich eine Verbindung zu diesem Server herstelle:
CookieContainer myContainer = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://telematicoprova.agenziadogane.it/TelematicoServiziDiUtilitaWeb/ServiziDiUtilitaAutServlet?UC=22&SC=1&ST=2");
request.Credentials = new NetworkCredential(xxx,xxx);
request.CookieContainer = myContainer;
request.PreAuthenticate = true;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
(Ich habe dies von einem anderen Beitrag auf dieser Seite kopiert). Aber ich erhalte diese Antwort vom Server:
Die zugrunde liegende Verbindung wurde geschlossen: Beim Senden ist ein unerwarteter Fehler aufgetreten.
Ich glaube, ich habe jede mögliche Aufgabe ausprobiert, die mir mein Wissen über C # zu bieten hat, aber nichts ...
quelle
Antworten:
Sie können den Autorisierungsheader auch einfach selbst hinzufügen.
Geben Sie einfach den Namen "Authorization" und den Wert "Basic BASE64 ({USERNAME: PASSWORD})" ein.
Bearbeiten
Die Codierung wurde von UTF-8 auf ISO 8859-1 umgestellt. Welche Codierung sollte ich für die HTTP-Basisauthentifizierung verwenden? und Jeroens Kommentar.
quelle
Ich habe es endlich verstanden!
und das ist
GetCredential()
YAY!
quelle
Wenn Sie die
WebClient
Klasse verwenden können, wird die Verwendung der Basisauthentifizierung einfach:quelle
Versuche dies:
quelle
Bei Verwendung von RestSharp kann dies bei Verwendung von SimpleAuthenticator fehlschlagen (möglicherweise aufgrund der Nichtverwendung von ISO-8859-1 hinter den Kulissen ). Ich habe es geschafft, indem ich explizit Basic Authentication-Header gesendet habe:
quelle
Der folgende Code löst die JSON-Antwort, wenn die Standardauthentifizierung und der Proxy implementiert sind. Auch IIS 7.5 Hosting Problm wird aufgelöst.
quelle
Die Spezifikation kann als "ISO-8859-1" oder "undefiniert" gelesen werden. Deine Entscheidung. Es ist bekannt, dass viele Server ISO-8859-1 verwenden (ob es Ihnen gefällt oder nicht) und fehlschlagen, wenn Sie etwas anderes senden.
Weitere Informationen und einen Vorschlag zur Behebung der Situation finden Sie unter http://greenbytes.de/tech/webdav/draft-reschke-basicauth-enc-latest.html
quelle
Die folgende Konstruktion funktionierte bei mir nicht richtig:
Ich habe
CredentialCache
stattdessen verwendet:Wenn Sie jedoch mehrere grundlegende Authentifizierungsdaten hinzufügen möchten (z. B. wenn Ihnen eine Umleitung bekannt ist), können Sie die folgende Funktion verwenden, die ich vorgenommen habe:
Ich hoffe, es wird in Zukunft jemandem helfen.
quelle
Als erstes für mich ServicePointManager.SecurityProtocol = SecurityProtocolType. Tls12 funktionierte anstelle von Ssl3.
Zweitens musste ich die Basic Auth-Anfrage zusammen mit einigen Daten (formular-urlencoded) senden. Hier ist das komplette Beispiel, das für mich perfekt funktioniert hat, nachdem ich viele Lösungen ausprobiert habe.
Haftungsausschluss: Der folgende Code ist eine Mischung aus Lösungen, die unter diesem Link und einigen anderen Stackoverflow-Links gefunden wurden. Vielen Dank für die nützlichen Informationen.
quelle