UIWebView使用NSUrlProtocol Xamarin.Forms缓慢加载

时间:2016-02-29 22:42:08

标签: ios xamarin uiwebview xamarin.forms nsurlprotocol

我正在使用Xamarin.Forms开发iOS应用程序。

此应用程序使用UIWebView控制器,该控制器显示托管在我的服务器上的Web应用程序。每次我发出请求时,我都必须发送一个自定义标头,以便识别此请求来自移动应用程序,而不是来自浏览器,为此,我使用的是 NSUrlProtocol 对象覆盖在每个请求上插入自定义标头的方法 Request 。这是我的代码:

    public override NSUrlRequest Request {
        get {
            NSMutableDictionary headers = null;
            if (null == base.Request.Headers) {
                headers = new NSMutableDictionary ();
            } else {
                headers = new NSMutableDictionary (base.Request.Headers);
            }
            headers.Add(NSObject.FromObject(AppVariables.headerVariable), NSObject.FromObject (AppVariables.appVersion));
            NSMutableUrlRequest newRequest = (NSMutableUrlRequest)base.Request.MutableCopy ();
            newRequest.Headers = headers;
            return newRequest;
        }
    }

我现在遇到的问题是,我注意到自从我开始使用 NSUrlProtocol 后,页面的加载时间增加了很多。现在加载需要10秒,在此实现之前,页面大约需要3秒钟。

任何人都可以指出一些有用的方向来克服这个问题吗?

2 个答案:

答案 0 :(得分:1)

当您使用自定义标头时,我没有看到任何延迟响应时间的原因。就像Andreas在评论中提到的那样,我认为它与您的服务器代码有关。我建议您分析服务器代码。

当您从Fiddler或cURL发送请求(使用自定义标头)时,您是否看到类似的结果?

答案 1 :(得分:0)

就像@AndreasPaulsson和@prashant提到的那样,服务器可能是罪魁祸首。我建议使用像Postman这样的工具测试API并检查响应速度。我还建议你检查ModernHttpClient by Paul C Betts。在iOS中,库使用NSUrlSession。