2014-12-02 10 views
1

에 대한 웹 클라이언트 프롬프트를 만드는 방법을 그래서 나는이 코드를 작동 한 어떤 :자격 증명

var netCred = new NetworkCredential { UserName = "user1", Password = @"pass1" }; 
    WebClient proxy = new WebClient(); 
    proxy.Credentials = netCred; 

    //Method 1 - Newtonsoft.Json 


     string serviceURL = 
      string.Format("https://sourcesite.com/api/external/v1/Snapshot-Accrual?isConfirmed=" 
      + Confirmed.ToString() + "&sinceDate=" + String.Format("{0:yyyy-MM-dd}", SinceDate); 
     data = proxy.DownloadData(serviceURL); 
     jsonString = Encoding.ASCII.GetString(data); 

     ac1 = Newtonsoft.Json.JsonConvert.DeserializeObject<SnapshotAccruals>(jsonString); 

을 지금은 대신 하드 코딩을, 내가 설정 될 것의 자격 증명을 요청하는 방법을 알고 있다면. 브라우저에 직접 serviceURL을 붙여 넣으면 자격 증명을 묻는 메시지가 표시됩니다. 코드에서이를 생략하면 (401) Unauthorized가됩니다.

+0

위의 예제 코드를 포함하는 클라이언트는 어떤 종류의 응용 프로그램입니까? 콘솔 응용 프로그램, WinForms 클라이언트 또는 다른 것입니까? –

+0

은 WinForms 앱입니다. – Lukasz

답변

0

Fiddler을 사용하여 브라우저가 어떻게 작동하는지 살펴보고 URL을 브라우저에 붙여 넣으면 서버는 401을 반환하여 브라우저에 인증 대화 상자를 표시합니다.

항상 자격 증명이 필요한 경우 API 호출 전에 확인해야합니다. 그때 당신이 먼저 시도하고 401에 대한 응답을 확인하고 프롬프트가 필요합니다.

+0

감사합니다. WinForms에서 자격 증명을 요청하는 표준 방법이 있습니까? 아니면 내 대화 상자를 직접 작성해야합니까? – Lukasz

+1

자신의 것을 쉽게 만들거나 다음을 시도해 볼 수 있습니다. http://stackoverflow.com/questions/7986862/c-sharp-winform-how-asking-for-credential-with-a-dialog-form – wal