2013-05-14 10 views
9

Ich versuche, eine Webanfrage über eine https-URL mit Standard-Authentifizierung zu tun. Und es funktioniert nicht! unten ist mein Code, es funktioniert tatsächlich, wenn ich eine nicht sichere URL gegen die sichere, und ich kann nicht herausfinden, was ich falsch mache. Works nur mit nicht sicher finden, aber wenn eine sichere URL verwendet wird, erhalte ich einen Benutzerauthentifizierungsfehler 401. Könnte es jemand falsch auf dem Server eingerichtet sein, oder ist es mein Code?C# - http Web-Anfrage mit https und Standard-Authentifizierung

Kann mir jemand helfen?

 var req = System.Net.HttpWebRequest.Create(Url) as HttpWebRequest; 
     req.Method = Method.ToString(); 
     req.ContentType = "application/json"; 
     req.Date = RequestTime; 
     req.Proxy = null; 
     string credentials = String.Format("{0}:{1}", "xxxx", "xxxx"); 
     byte[] bytes = Encoding.ASCII.GetBytes(credentials); 
     string base64 = Convert.ToBase64String(bytes); 
     string authorization = String.Concat("Basic ", base64); 
     req.Headers.Add("Authorization", authorization); 
     HttpWebResponse response = (HttpWebResponse)req.GetResponse(); 
    Stream receiveStream = response.GetResponseStream(); 

     StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); 
     string responsebody = readStream.ReadToEnd(); 
     Console.WriteLine(responsebody); 

     response.Close(); 
     readStream.Close(); 
+0

auch der Code für die Authentifizierung in Ordnung scheint, aber wirklich kann nichts sagen, bis ich die URL sehen. –

+0

Sie möchten möglicherweise die Anmeldeinformationen für die sichere Verbindung auffüllen. http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.credentials.aspx – JuStDaN

+1

Danke für die Vorschläge Jungs. Sieht so aus, als wäre mein Code in Ordnung. Sie hatten etwas Setup falsch auf dem Server, das sie endlich behoben! – user1096865

Antwort

11

Dies funktioniert für mich:

var webRequest = (HttpWebRequest)WebRequest.Create(url); 
webRequest.Method = "GET"; 
webRequest.ContentType = "application/json"; 
webRequest.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:28.0) Gecko/20100101 Firefox/28.0"; 
webRequest.ContentLength = 0; // added per comment 
string autorization = "username" + ":" + "Password"; 
byte[] binaryAuthorization = System.Text.Encoding.UTF8.GetBytes(autorization); 
autorization = Convert.ToBase64String(binaryAuthorization); 
autorization = "Basic " + autorization; 
webRequest.Headers.Add("AUTHORIZATION", autorization); 
var webResponse = (HttpWebResponse)webRequest.GetResponse(); 
if (webResponse.StatusCode != HttpStatusCode.OK) Console.WriteLine("{0}",webResponse.Headers); 
using (StreamReader reader = new StreamReader(webResponse.GetResponseStream())) 
{ 
    string s = reader.ReadToEnd(); 
    Console.WriteLine(s); 
    reader.Close(); 
} 
+0

Nein, das funktioniert nicht – Cheese

+0

@Cheese Was ist eine Fehlermeldung bei Ihrer Ausführung? –

+0

@Cheese Dies funktionierte für mich, aber ich musste webRequest.ContentLength = 0 hinzufügen, da es ohne es nicht glücklich war, obwohl der Body-Inhalt 0 war. – John

Verwandte Themen