C# Netzwerk-Anmeldedaten nicht weitergegeben werden, um server?

Edit: Mit:

byte[] authBytes = System.Text.Encoding.UTF8.GetBytes(user + ":" + password);
wr.Headers["Authorization"] = "Basic " + Convert.ToBase64String(authBytes);

Scheint gut zu funktionieren.

Ich habe eine Anwendung, die Kommunikation mit einem CMS. Ich bin derzeit versuchen, diese Kunden werden in der Lage, hochladen, text/xml-Daten in die CMS mit einem "POST" - Methode.

Kann ich diese übergeben durch die Verwendung von curl völlig in Ordnung:

curl -u user:password -H "Content-Type:text/xml" -d "<element>myXML</element>" serverURL

Allerdings versuchen, verwenden Sie die HttpWebRequest-Klasse in C# komme ich nicht an die server zurück wie ich es wollte. So feuerte ich Wireshark und hatte einen Blick auf, was war eigentlich Durchlaufen, und es ist so ziemlich identisch, mit Ausnahme der Tatsache, dass bei der Verwendung von curl kann ich sehen:

Authorization: Basic <a bunch of hex>=\r\n
Credentials: user:password

In die HTTP-header-Felder, während in der Ausgabe von meinem client werden die header-Felder sind einfach nicht vorhanden. ("Anmeldeinformationen:" ist das nicht eigentlich dort im Klartext, es ist eine Unterstruktur von "Authorization:" also ich bin mir nicht sicher, wo es immer aus, aber der Benutzername und Passwort korrekt sind.)

Den C# - code, den ich versuche zu verwenden, um die Anmeldeinformationen für den webrequest ist so etwas wie dieses:

NetworkCredential myCred = new NetworkCredential(
                    user, password, serverURL);

CredentialCache myCache = new CredentialCache();

myCache.Add(new Uri(serverURL), "Basic", myCred);

HttpWebRequest wr = (HttpWebRequest) HttpWebRequest.Create(serverURL);
wr.Credentials = myCache;

Habe ich versucht, nur die Einstellung der Anmeldeinformationen, die das auch mögen (und ohne die Angabe serverURL):

wr.Credentials = new NetworkCredential(user,password,serverURL);

Aber, dass immer noch nicht zeigen, bis in wireshark. Hat jemand eine Ahnung ob:

A), Die Genehmigung Informationen, die eigentlich im HTTP-header für diese zu arbeiten, und

B) Wenn es - so wie ich C# legen Sie es in? Ich habe nur zu sein scheinen in der Lage zu finden, anständige Beispiele, die über die Standard-Anmeldeinformationen, die passt nicht zu dem, was ich Tue.

Vielen Dank im Voraus.

Schreibe einen Kommentar