2012-04-05 8 views
1

私はcurlユーティリティから行うと、JustOneDBにhttps GETを実行しようとしています。しかし、そのCで動作していない#。 私は不正なリクエストを受け取りましたAppharbor JustOneDB httpsリクエストからC#400エラーを取得

私は検索してセキュリティを無効にしましたが、それでもまだ動作しません。何か案は? 誰でもこのやりとりとJustOneDBをしましたか?

これは、他のすべての残りの部分の例/ Wに沿って動作します:

curl -k -XGET 'https://username:[email protected]:31415/justonedb/database/database name'

これは動作しません:私は私のパスコードを削除する文字列をDummied。

public ActionResult JustOneDb() 
    { 
     /////////// 
     HttpWebRequest request = null; 
     HttpWebResponse response = null; 
     try 
     { 

      String Xml; 
      //curl -k -XGET 'https://[email protected].105:31415/justonedb/database/n10lvkpdhdxei0l2uja' 
      string url = @"https://[email protected]:31415/justonedb/database/n10lvkpdhdxei0l2uja"; 

      request = (HttpWebRequest)WebRequest.Create(url); 

      request.Method = "GET"; 

      request.Credentials = CredentialCache.DefaultCredentials; 

      // Ignore Certificate validation failures (aka untrusted certificate + certificate chains) 
      ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true); 


      // Get response 
      using (response = (HttpWebResponse)request.GetResponse()) 
      { 
       // Get the response stream 
       StreamReader reader = new StreamReader(response.GetResponseStream()); 
       Xml = reader.ReadToEnd(); 
      } 
      return Content(Xml); 
     } 
     catch (Exception ee) 
     { 
      return Content(ee.ToString()); 

     } 
     ////////////// 

     ViewBag.fn = "*.xml"; 
     return View(); 
    } 

結果:

System.Net.WebException: The remote server returned an error: (400) Bad Request. at System.Net.HttpWebRequest.GetResponse() 
at Mvc3Razor.Controllers.MyXmlController.JustOneDb() ... 

TIA FXM:{

答えて

1

URLの代わりに、ユーザー名・パスワードを渡すのは、 "ユーザ名" と "パスワード" で正しい資格情報を作成する必要があります。生WebRequestの代わりにRestSharpのようなものを使用することを検討することもできます。

+0

RestSharpも機能しませんでした。私はそれが証明書付きの何かを持っていると思う。その他のhttpsサイトが動作します。そして、カールが働きます。本当に同じアプリケーションがPerlの平和を持っているため、JustOneDbに残りをやりたい。おかげさまで – FxM

+0

さて、私はJustOneDBの人と連絡を取るつもりです。 – friism

0

証明書との不一致が修正されました。これはまだ自己署名されていますが、ホスト名は一致します。すぐに完全に署名された証明書を使用するように変更する予定ですが、その間に自己署名のオーバーライドで動作するかどうかを教えてください。

+0

それでも動作しません。ドットネットは、カールだけを使用してより制限的です。 TA – FxM

0

私はコードをコピーしました。問題は、HttpWebRequestライブラリが元の要求に認証ヘッダーを追加していないことです。解決策は、あなたが「request.Method = 『GET』の行の後に次の2行を追加します(とURL文字列からユーザー名/パスワードを削除する)ので、もし、手動でヘッダーを挿入することです:

string authInfo = "zn0lvkpdhdxb70l2_DUMMY_urshn5e7i41lb3fiwuh"; 
request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(authInfo)); 

それが必要正しく動作します。

関連する問題