2013-05-14 14 views
9

私は基本認証でhttps urlでWebリクエストを実行しようとしています。そして、それは動作していない! 以下は私のコードですが、安全でないURLと安全なURLを使用すれば実際に動作し、何が間違っているのか分かりません。作品はセキュリティで保護されていませんが、セキュアなURLを使用すると、401ユーザーの認証エラーが発生します。それは誰かがサーバー上で間違って設定されている、またはそれは私のコードですか?c# - httpsと基本認証を使用したhttp Webリクエスト

誰かが私を助けることができますか?

 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

だけでなく、コードが認証のために細かいようだが、私は、URLが表示されるまで、本当に何を伝えることはできません。 –

+0

セキュリティで保護された接続の資格情報を設定することができます。 http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.credentials.aspx – JuStDaN

+1

提案のおかげでありがとう。私のコードは大丈夫だったようです。彼らは何かセットアップが間違っていて、最終的に修正されました! – user1096865

答えて

11

これが私の作品:

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

nop、これは動作しません – Cheese

+0

@Cheeseあなたの実行にはどのようなエラーメッセージが表示されますか? –

+0

@Cheeseこれは私のために働いたのですが、体の内容が0だったにもかかわらずwebRequest.ContentLength = 0を追加しなければなりませんでした。 – John

関連する問題