2017-02-10 12 views
0

Swift 2.3プロジェクトですべてのリクエストを記録するためにNSURLProtocolを使用しようとしました。ただし、すべてのURL要求が記録されているわけではありません。特に、Alamofireの要求はすべて記録されていません。Swift - Macアプリケーションですべてのリクエストを記録する

サンプルコード

class AppDelegate: NSObject, NSApplicationDelegate{ 
    func applicationDidFinishLaunching(aNotification: NSNotification) { 
     NSURLProtocol.registerClass(TestURLProtocol) 
     Alamofire.request(.GET, SomeURL).responseSwiftyJSON({ (request, response, json, error) in }) 
    } 
} 

class TestURLProtocol: NSURLProtocol { 
    override class func canInitWithRequest(request: NSURLRequest) -> Bool { 
     print("request \(request.URL!)") // never called 
     return false 
    } 
} 

答えて

0

私はAlamofireがNSURLProtocol.registerProtocolコールに影響されない新しいURLSession APIを使用しているため、これがあると思います。

URLSessionURLSessionConfigurationで作成し、protocolClassesの配列を[TestURLProtocol.self]に設定する必要があります。

しかし、これで暗黙のAlamofire.requestを使用するのではなく、どこでもカスタムのSessionManagerを使用してリクエストを記録する必要があります。

+0

このレスポンスのメソッドを使用しようとしましたが動作しませんでした。 http://stackoverflow.com/a/28720198/1449607 – datinc

+0

ええ、セッションマネージャーに設定を注入してから、それを 'Alamofire.request'の代わりに使用する必要があります – Alistra

+0

私はサードパーティのサービスも監視しようとしています。私は彼らのコードの変更なしにそれらの要求を監視することができるソリューションを探しています。 – datinc

0

私が使用し終わったのは、ポッドOHHTTPStubsでした。私は使用されているすべてのホストをログに記録するために、アプリケーションデリゲートに次のコードを追加しました。

関連する問題