我正在使用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秒钟。
任何人都可以指出一些有用的方向来克服这个问题吗?
答案 0 :(得分:1)
当您使用自定义标头时,我没有看到任何延迟响应时间的原因。就像Andreas在评论中提到的那样,我认为它与您的服务器代码有关。我建议您分析服务器代码。
当您从Fiddler或cURL发送请求(使用自定义标头)时,您是否看到类似的结果?
答案 1 :(得分:0)
就像@AndreasPaulsson和@prashant提到的那样,服务器可能是罪魁祸首。我建议使用像Postman这样的工具测试API并检查响应速度。我还建议你检查ModernHttpClient by Paul C Betts。在iOS中,库使用NSUrlSession。