System.Net API를 사용하여 현재 사용자를 REST 끝점에 인증 할 수 없습니다. 아래의 예는 내가있는 NSURLConnection를 사용하는 경우 나 문제가되지 인증 할 수 있어요 허가받지 않은 401Xamarin.Mac - 현재 자격 증명을 REST 끝점에 전달하는 방법
using (HttpClient client = new HttpClient())
{
using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://rest/api/endpoint")
{
using (httpResponseMessage response = await client.SendAsync(request))
{
if (response.IsSuccessStatusCode)
//do something
}
}
}
를 반환합니다. 그래서, NSUrlConnection 어떻게 자격 증명을 전달해야합니다. 다음은 해당 코드의 일부입니다.
var request = new NSMutableUrlRequest(new NSUrl("http://rest/api/endpoint"), NSUrlRequestCachePolicy.ReloadIgnoringCacheData, 0);
request["Accept"] = "application/json";
NSUrlConnection.SendAsynchronousRequest(request, NSOperationQueue.MainQueue, delegate(NSUrlResponse, response, NSData data, NSError error)
{
// successfully authenticated and do something with response
});
다른 서비스와 공유하기 위해 내 서비스 코드를 PCL로 포장하고 싶습니다. 따라서 System.Net API 내에서이 모든 작업을하고 싶습니다. 이것이 가능한가?
업데이트 :
HttpClientHandler를 사용하고 CredentialCache.DefaultNetworkCredentials와 같은 기본 자격 증명을 사용해 보았습니다. 이 기능을 작동시키는 유일한 방법은 내가 원하지 않는 자격 증명을 하드 코드하는 것입니다. System.Net 스택이 OS의 자격 증명을 표시하지 않는 것으로 보입니다.
인증을위한 헤더를 추가해야한다고 가정합니다. 끝점에 따라 다릅니다. 'C# httpclient authenticate '를 당신이 좋아하는 검색 엔진에 타이핑하면 그 질문에 답을해야만합니다. – Equalsk
헤더와 함께 하드 코드 된 자격 증명을 보내는 경우에만 작동합니다. 그러나 현재 mac에 로그온 한 사용자의 현재 자격 증명을 사용하려고합니다. – Paul