0
XamarinネイティブiOSアプリケーションを作成しており、nsurlsessionを使用してHTTPエンドポイントにアクセスして基本認証のチャレンジを得ています。Xamarin iOS:NSURLSession APIを使用しているときにDidReceiveChallengeの問題
私の問題は私のデリゲートでDidReceiveChallengeメソッドが呼び出されていないということです。
マイコード:
NSUrl url = new NSUrl("http://httpbin.org/basic-auth/test/test");
NSUrlRequest request = new NSUrlRequest(url);
NSUrlSession session = null;
NSUrlSessionConfiguration myConfig = NSUrlSessionConfiguration.DefaultSessionConfiguration;
MySessionDelegate myDelegate = new MySessionDelegate();
NSOperationQueue myQueue = new NSOperationQueue();
session = NSUrlSession.FromConfiguration(myConfig, myDelegate, myQueue);
NSUrlSessionTask task = session.CreateDataTask(request, (data, response, error) =>
{
Debug.WriteLine("data is"+data+"response is"+response+"error is "+error);
});
task.Resume();
マイDelegateクラス:
public class MySessionDelegate : NSUrlSessionDelegate
{
public override void DidReceiveChallenge(NSUrlSession session, NSUrlAuthenticationChallenge challenge, Action<NSUrlSessionAuthChallengeDisposition, NSUrlCredential> completionHandler)
{
Debug.WriteLine("challenge is"+challenge.ProtectionSpace.AuthenticationMethod);
base.DidReceiveChallenge(session, challenge, completionHandler);
}
}
私は現在、午前アプリケーションの出力取得:
data isresponse is<NSHTTPURLResponse: 0x170437700> { URL: http://httpbin.org/basic-auth/nsharma/[email protected] } { status code: 401, headers {
"Access-Control-Allow-Credentials" = true;
"Access-Control-Allow-Origin" = "*";
"Content-Length" = 0;
Date = "Sat, 11 Feb 2017 03:18:45 GMT";
Server = nginx;
Via = "1.1 nas58.airwlab.com";
"Www-Authenticate" = "Basic realm=\"Fake Realm\"";
} }error is
あなたが見ることができるように、私は基本的な認証挑戦のために401を発行するURLを打つことができます。通常、私はデリゲートインスタンスの中でDoReceiveChallengeメソッドを呼び出すことを期待していますが、それを呼び出すことはなく、実行を終了します。