11

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

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

    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 秒。

谁能指出一些有用的方向来克服这个问题?

4

2 回答 2

1

当您使用自定义标头时,我看不出响应时间延迟的任何原因。就像评论中提到的 Andreas 一样,我相信这与您的服务器代码有关。我建议分析您的服务器代码。

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

于 2016-04-01T06:38:53.133 回答
0

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

于 2016-04-05T05:14:01.607 回答