2009-06-03 25 views
5

Kullanıcı adı ve parola gerektiren bir https URI almak için HttpWebRequest kullanmaya çalışıyorum. URI'yi bir tarayıcıya koyarsam, kimlik bilgilerini soran bir iletişim kutusu açılır ve sonra çalışır. HttpWebRequest kullanımı bana 401 yetkisiz bir hata veriyor.İstemci kimlik bilgileriyle SSL üzerinden HttpWebRequest

NetworkCredentials belgeleri, SSL'yi desteklemediğini, ancak ne kullanmam gerektiğini bulamıyorum.

cevap

5

Sunucu, HTTP temel kimlik doğrulaması mı yoksa başka bir çeşit mi kullanıyor? HTTP temelini kullanıyorsa, web kullanıcı isteği üzerine Credentials özelliğini doğru kullanıcı adı ve parola içeren bir kimlik bilgisine ayarlayabilir ve PreAuthenticate özelliğini true değerine ayarlayabilirsiniz.

var uri = new Uri("https://somesite.com/something"); 
var request = WebRequest.Create(uri) as HttpWebRequest; 
request.Credentials = new NetworkCredential("myUserName","myPassword"); 
request.PreAuthenticate = true; 

var response = request.GetResponse(); 

Not:

İşte bir örnek (Bu denenmemiş, yani sadece bir kılavuz olarak kullanabilirsiniz) var Bunu yaparken Tecrübelerime göre NET çerçevesinde bazı garip davranış yoktur. Bunu kod diyor yapmalı düşünmek istiyorum, ama aslında yapar:

  • Server verdi kimlik bilgileriyle 401
  • Yeniden Gönder isteği ile yanıt hayır bilgilerle sunucuya

    • Gönder isteği
    • Sunucu, isteği kabul eder.

    Neden böyle yapılacağına dair hiçbir fikrim yok, kırılmış göründüğü için, belki de makinemin bir tuhaflığıydı ve belki de sana olmayacaktı.

    Uygulamanız performans açısından hassas değilse ve istekleriniz büyük verilerin POSTS'ları değilse, büyük olasılıkla farkedilmeyeceksiniz, ancak bunun üstesinden gelmek için, HTTP temel kimlik doğrulama üstbilgisini el ile oluşturmalı ve HttpWebRequestHeaders koleksiyonunu elle işleyerek.

  • +0

    Açıkladığınız davranışın, * nix gösterilerinde yer alan aynı davranış olduğuna inanıyorum. Bir kez dener ve başarısız olur ve daha sonra kimlik bilgilerini gönderir ve başarılı olur. – Stephan

    +0

    Bence bu, http belirtiminin bir parçası olan bir tür meydan okuma isteği dizisidir. – MGOwen

    İlgili konular