2012-04-05 2 views
1

400 오류가 발생합니다. 하지만 C#에서 작동하지 않습니다. 내가 할 (400) 잘못된 요청Appharbor JustOneDB에 https가 점점 C 번호에서 요청 나는 컬 유틸리티에서 그것을 할 경우 작동 JustOneDB하기 위해 HTTPS GET을하려고

나는 주변에 장애인 보안 검색 및 모든 것을하지만 여전히 작동하지 않습니다. 어떤 아이디어? 누구나이 작업과 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]: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

여전히 작동하지 않습니다. 도트 그물은 단지 컬을 사용하여 더욱 제한적입니다. 고마워 – FxM

0

좋아, 내가 코드를 복사하고, 문제는 HttpWebRequest를 라이브러리가 원래 요청의 인증 헤더를 추가되지 않는 것입니다.

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

그것은해야을 :이 솔루션은 (URL 문자열에서 사용자 이름/암호를 제거)이 'request.Method = "GET"줄 끝에서 다음 두 줄을 추가, 그래서 만약 수동으로 헤더를 삽입하는 것입니다 올바르게 작동합니다.