我有一个 UITableView,其单元格包含从 Internet 异步加载图像的自定义 ImageView。要加载这些图像,我使用 NSURLRequest 和 NSURLConnection 工作正常。唯一的问题是图像没有缓存,因此每次使用时都会下载。我试图将 NSURLRequest 的 cachePolicy 设置为“NSURLRequestReturnCacheDataElseLoad”,但没有任何效果。
从链接上的最后一个答案看来,iPhone 上的 NSURLRequest 不支持磁盘缓存。这样对吗?
如果它真的有效,我很想知道在我的情况下它不起作用的原因是什么。
这是代码:
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://myurl"] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60.0];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
Run Code Online (Sandbox Code Playgroud) 我知道之前已经问过这个问题,但是我已经看过每一个答案(没有很多),没有人帮助我.
我遇到的问题是我的学校电子邮件服务处理证书.这两个电子邮件服务的链接如下:
主校电子邮件:https: //marauder.millersville.edu/mail/index.pl
计算机科学电子邮件:https: //cs.millersville.edu/cswebmail
大学学生门户网站(在我的UIWebView中单击时,右边的Marauder Mail按钮不会打开)
http://myville.millersville.edu/
起初,这两个网站都不会使用标准的NSURL和NSURLRequest加载到我的UIWebView中.我在网上查找了解决方案,有人建议使用NSURLProtocolClient委托方法.在实现它们之后,我的UIWebView现在只会在学校邮件电子邮件加载时,当我有一个按钮时,点击时直接打开链接,而不是尝试从门户网站(上面的第3个链接)访问邮件,它仍然永远不会加载计算机科学电子邮件链接.我已经搜索了iOS帮助网站,发布了问题,尝试了多个开源自定义UIWebViews,但我还没有发现任何有用的东西.
我在网上看过的大多数答案都指向ASIHTTPRequest.我试过这个但是我无法正确实现它,它不会在我的UIWebView中加载链接; 这是我如何加载链接的代码:
mURL = [self getURL:viewNumber];
ASIHTTPRequest *req = [ASIHTTPRequest requestWithURL:mURL];
[req setDelegate:self];
[req startSynchronous];
//NSURLRequest *req = [NSURLRequest requestWithURL:mURL];
//urlConnection=[[NSURLConnection alloc] initWithRequest:req delegate:self];
webView.scalesPageToFit = YES;
//[webView loadRequest:req];
Run Code Online (Sandbox Code Playgroud)
注释中的代码是我如何在没有ASIHTTPRequest的情况下加载链接.
任何帮助表示赞赏!
另外,我的UIWebView还有另一个问题,链接如下.我没有得到任何答案,所以如果你觉得无聊请检查一下: UIWebView没有检测到网站上的文本框
我不是在谈论a UIWebView,我想用一个打开移动safari应用程序NSURLRequest.
为什么?在我的应用程序中,用户已登录我们的Web服务器.我想让用户选择启动网页而无需重新输入凭据.但是,我不能使用a,GET因为这会将他们的凭据放在URL中.
那么,我可以UIWebView使用NSURLRequest或以POST其他形式从我的应用程序中打开safari应用程序(而不是a )吗?
在iOS中,我希望能够联系起来的NSURLRequest- 任何 NSURLRequest,导航请求或图片的样式表请求是否-与UIWebView发送它.这似乎要求实现一个NSURLProtocol子类来捕获和分析请求.但是,我找不到将请求与其Web视图相关联的方法,而且NSURLProtocol似乎只能理解NSURLRequests.
这对于导航请求很好,因为我可以在我的链接中建立关联UIWebViewDelegate.但这对于不触发UIWebViewDelegate方法的图像等辅助资源请求不起作用.
任何人都有关于建立这种关联的最佳方式的任何想法?
在我的应用程序中,对我的服务器的2-4个API调用可以在我的API类中同时(异步)进行NSURLSession.为了向我的服务器发出API请求,我必须在HTTPHeaderField每个服务器中提供身份验证令牌NSURLRequest.令牌有效期为一天,如果在一天后失效,我需要刷新令牌.
我在我的API类的以下代码中执行此操作:
/*!
* @brief sends a request as an NSHTTPURLResponse. This method is private.
* @param request The request to send.
* @param success A block to be called if the request is successful.
* @param error A block to be called if the request fails.
*/
-(void)sendTask:(NSURLRequest*)request successCallback:(void (^)(NSDictionary*))success errorCallback:(void (^)(NSString*))errorCallback
{
NSURLSessionDataTask *task = [self.session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
[self parseResponse:response data:data fromRequest:request successCallback:success errorCallback:^(NSString *error)
{ …Run Code Online (Sandbox Code Playgroud) 如何在我的 WebView 中更改 User-Agent 的默认字符串?
@IBOutlet weak var myWbView: UIWebView!
let myURL = NSURL(string: "http://http://web-example")
let myURLRequest:NSURLRequest = NSURLRequest(URL: myURL!)
myWbView.loadRequest(myURLRequest)
Run Code Online (Sandbox Code Playgroud) 这似乎很简单,因为创建一个NSURLConnection我通常这样做:
NSURL *theURL = [NSURL URLWithString:urlString];
NSURLRequest *req = [NSURLRequest requestWithURL:theURL];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:req delegate:self];
Run Code Online (Sandbox Code Playgroud)
但是如何在委托方法中获取URL?没有自己挂在他们身上(我一次运行很多连接,所以这变得有点凌乱).好像我应该能够从连接中获取URL.
我错过了什么吗?
我需要将Cyrillic字符作为参数传递到我的iPhone应用程序中的URL中.示例网址如下所示:
http://www.mysite.com/script.php?message =страшная
当我在浏览器中使用此URL时,它会返回正确的结果.但是,在我的应用程序中,西里尔字母不受欢迎,我最终在didFailWithError代码中得到一个"坏网址" .
我在浏览器中尝试了几种编码来解决这个问题,但没有运气.有没有办法通过iPhone应用程序实际发送上面的确切URL示例?我正在使用的代码片段是:
selectedWord = @"????????";
NSString *requestURL = [NSString stringWithFormat:@"http://www.mysite.com/script.php?message=%@", selectedWord];
NSLog (requestURL);
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:requestURL]];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,为了调试目的,我在NSString*selectedWord中硬编码了西里尔字.在实际应用中,它将基于用户输入而动态.
我尝试了一个更复杂的POST,认为我可以将西里尔文作为数据而不是文本传递,但要么我做错了,要么它也不起作用.
有关编码的任何示例我可以在我的浏览器中尝试,然后在应用程序中实现将是有帮助的.我意识到西里尔字母在NSURL中被拒绝,但我希望通过不同的代码或编码来绕过它.
NSDictionary *customerDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"blah@blah.com", @"email", @"1", @"facebook", nil];
NSArray *customerArray = [NSArray arrayWithObjects:customerDictionary, nil];
NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:customerArray, @"customers", nil];
NSURLRequest *request = [sharedHTTPClient requestWithMethod:@"POST" path:@"/api/upload" parameters:parameters];
AFJSONRequestOperation *operation =
[AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {}];
[operation start];
Run Code Online (Sandbox Code Playgroud)
在Node.JS后端,打印出正文显示:
{ customers: [ '1', 'blah@blah.com' ] }
Run Code Online (Sandbox Code Playgroud)
预期印刷品应为:
{ customers: [{ facebook:'1', email:'blah@blah.com' }] }
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
在iOS 7中,cachePolicy不起作用,它只是缓存下载的json.
//URLRequest
NSString *url = [NSString stringWithFormat:@"http://www.semhora.com/jsonparser/categories/categories_%d_test.json", _categoriesIndex];
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:url]
cachePolicy:NSURLCacheStorageNotAllowed
timeoutInterval:60.0];
Run Code Online (Sandbox Code Playgroud)
如何在iOS 7中禁止缓存?
nsurlrequest ×10
ios ×6
iphone ×3
uiwebview ×2
afnetworking ×1
api ×1
caching ×1
cocoa ×1
disk ×1
ios7 ×1
json ×1
node.js ×1
nsurlsession ×1
post ×1
swift ×1
urlencode ×1
user-agent ×1