System.Net APIを使用して現在のユーザーをRESTエンドポイントに認証できません。以下の例は不正な401を返すXamarin.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を使用する場合、私は問題はありません。だから、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