标签: nsurlrequest

用于离线查看的UIWebView网页缓存

首先,我很确定我已经检查过这里的每一个答案,我想做什么也没有.

  1. 在这个问题中,答案是ASIHTTPRequest,这是死项目.(如何在iPhone上下载整个网页(带图像)?)
  2. 在这个问题中,用户提出了RNCachingURLProtocol,这真的很棒但是在完全关闭应用程序之后我遇到了一些问题(在任务栏中关闭它).之后我没有得到CSS或图像,只加载了html.(在Xcode/UIWEBVIEW中脱机时缓存单个网页以供使用).

答案很少,但没有一个是好的.对于我正在搜索的内容,必须有一些简单的实现.

我想:当应用程序打开时,它会加载一些网页.我想完全保存该网页.现在用户可以退出或做任何他想做的事情(只是不卸载).只要有一些互联网连接(我检查使用可达性类),网页正常加载并保存.如果用户打开应用程序并且没有INTERNET连接我只想显示"它可能不是最新的bla bla boa"的消息并显示上次应用程序有互联网连接时保存的完整,保存的网页.

保存完整网页的最佳方式(最新)是什么?我发现了一些关于MKNetworkKit但我不确定如何使用它.任何帮助,将不胜感激.

objective-c uiwebview nsurlrequest ios

19
推荐指数
2
解决办法
3万
查看次数

如何知道NSURLResponse是否来自缓存?

我在特定文件夹上设置了NSURLCache(../../Application Support/Offline,因此它不会被OS随机删除),然后我发送NSURLRequest和NSURLRequestReturnCacheDataElseLoad策略.

如何判断由符合NSURLConnectionDelegate的类处理的响应是来自缓存还是来自网络?

nsurlconnection nsurlrequest nsurlcache nsurlconnectiondelegate

18
推荐指数
1
解决办法
2151
查看次数

NSURLRequest:发布数据并阅读发布的页面

在iOS(当前目标5.0,Base SDK 5.1)中,如何向服务器发送发布请求,然后读取页面内容.例如,页面采用用户名和密码,然后回显true或false.这只是为了更好地理解NSURLRequest.

提前致谢!

iphone objective-c request nsurlrequest ios

17
推荐指数
2
解决办法
4万
查看次数

使用UIWebView loadRequest发送自定义标头

我希望能够使用我的UIWebView loadRequest方法发送一些额外的标头.

我试过了:

NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.reliply.org/tools/requestheaders.php"]];
[req addValue:@"hello" forHTTPHeaderField:@"aHeader"];

[self.theWebView loadRequest:req];
Run Code Online (Sandbox Code Playgroud)

我也试过继承UIWebView和拦截- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType方法.

在那个方法中,我有一个代码块,看起来像这样:

NSMutableURLRequest *newRequest = [request mutableCopy];
for(NSString *key in [customHeaders allKeys]) {
    [newRequest setValue:[customHeaders valueForKey:key] forHTTPHeaderField:key];
}
[self loadRequest:newRequest];
Run Code Online (Sandbox Code Playgroud)

但由于某些未知原因,它导致Web视图无法加载任何内容(空白帧)并出现错误消息NSURLErrorCancelled (-999)(所有已知的修复程序都没有为我修复它).

所以我不知道该怎么做.如何发送自定义标头和UIWebView请求?

非常感谢!

iphone uiwebview nsurlrequest ios

17
推荐指数
2
解决办法
2万
查看次数

NSURLRequest的私有"setAllowsAnyHTTPSCertificate:forHost:"的替代方法?

我的iPhone应用程序仅因使用(非常安全,似乎)私有方法+setAllowsAnyHTTPSCertificate:forHost:而被拒绝NSURLRequest.是否有非私有API来模拟此功能?

iphone cocoa cocoa-touch iphone-privateapi nsurlrequest

16
推荐指数
2
解决办法
2万
查看次数

16
推荐指数
2
解决办法
4万
查看次数

使用NSURLRequest通过POST将键值对传递给PHP脚本

我是objective-c的新手,我希望使用POST将一些键值对传递给PHP脚本.我正在使用以下代码,但数据似乎没有通过发布.我也试过通过使用NSData来发送东西,但似乎都没有工作.

 NSDictionary* data = [NSDictionary dictionaryWithObjectsAndKeys:
    @"bob", @"sender",
    @"aaron", @"rcpt",
    @"hi there", @"message",
    nil];

 NSURL *url = [NSURL URLWithString:@"http://myserver.com/script.php"];
 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

 [request setHTTPMethod:@"POST"];
 [request setHTTPBody:[NSData dataWithBytes:data length:[data count]]];

  NSURLResponse *response;
  NSError *err;
  NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
  NSLog(@"responseData: %@", content);
Run Code Online (Sandbox Code Playgroud)

这将被发送到这个简单的脚本来执行数据库插入:

<?php $sender = $_POST['sender'];
      $rcpt = $_POST['rcpt'];
      $message = $_POST['message'];

      //script variables
      include ("vars.php");

      $con = mysql_connect($host, $user, $pass);
      if (!$con)
      {
        die('Could not connect: ' . mysql_error());
      }

      mysql_select_db("mydb", $con);

      mysql_query("INSERT INTO php_test …
Run Code Online (Sandbox Code Playgroud)

php iphone cocoa-touch objective-c nsurlrequest

16
推荐指数
1
解决办法
3万
查看次数

有没有办法将参数的NSDictionary附加到NSURLRequest而不是手动创建字符串?

AFNetworking允许您向NSDictionary请求添加一个参数,它会将它们附加到请求中.因此,如果我想做一个GET请求,?q=8&home=8888我只是@{@"q": @"8", @"home": @"8888"}简单地制作一个NSDictionary .

是否有办法用NSURLSession/ NSURLConnection/ NSURLRequest

我知道我可以NSJSONSerialization用来附加JSON数据,但如果我只想将它们作为GETURL中的参数呢?我应该添加一个类别吗?

objective-c nsurlconnection nsurlrequest ios nsurlsession

16
推荐指数
2
解决办法
2万
查看次数

在iOS中通过HTTP获取图像时不断增长的内存分配

我正在实现一个需要通过HTTP获取大量图像的iOS应用程序.我已经尝试了几种方法但独立完成了我的工作,Instuments显示不断增加的内存分配,并且当我在设备上运行它时,应用程序迟早会崩溃.仪器没有泄漏.

到目前为止,我尝试了以下方法:

  • 在NSOperation中使用同步NSURLConnection获取图像
  • 在NSOperation中使用异步NSURLConnection获取图像
  • 使用Main-Thread中的[NSData dataWithContentsOfURL:url]获取图像
  • 在NSOperation中使用同步ASIHTTPRequest获取图像
  • 使用异步ASIHTTPRequest获取图像并将其添加到NSOperationQueue
  • 使用异步ASIHTTPRequest和使用completionBlock获取图像

Instrumetns中的调用树显示在处理HTTP响应时消耗了内存.在异步NSURLConnection的情况下,这是

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[receivedData appendData:data];
}  
Run Code Online (Sandbox Code Playgroud)

在同步NSURLConnection的情况下,Instruments显示了不断增长的CFData(商店)条目.ASIHTTPRequest的问题似乎与类似代码位置中的异步NSURLConnection相同.[NSData dataWithContentsOfURL:url]方法在exactely该语句中显示了越来越多的总内存分配.

当请求在一个单独的线程中完成时,我正在使用NSAutoReleasePool,我试图用[[NSURLCache sharedURLCache] removeAllCachedResponses]释放内存 - 没有成功.

有什么想法/提示来解决问题吗?谢谢.

编辑: 如果我使用CoreData持久保存图像,则仅显示该行为.这是我作为NSInvocationOperation运行的代码:

-(void) _fetchAndSave:(NSString*) imageId {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *url = [NSString stringWithFormat:@"%@%@", kImageUrl, imageId];
HTTPResponse *response = [SimpleHTTPClient GET:url headerOrNil:nil];
NSData *data = [response payload];

if(data && [data length] > 0) {
    UIImage *thumbnailImage = [UIImage imageWithData:data];
    NSData *thumbnailData = UIImageJPEGRepresentation([thumbnailImage scaleToSize:CGSizeMake(55, 53)], 0.5); // UIImagePNGRepresentation(thumbnail); 

    [self performSelectorOnMainThread:@selector(_save:) …
Run Code Online (Sandbox Code Playgroud)

memory objective-c nsoperation nsurlrequest ios

14
推荐指数
2
解决办法
5014
查看次数

HTTP状态码411 - 需要的长度

我试图从服务器获取数据.我使用NSURLConnectionDelegate,NSURLConnectionDataDelegate.有代码(Objective-C).

-(void)sendRequest
{
NSURL* url = [[NSURL alloc] initWithString:@"http://SomeServer"];

NSMutableURLRequest* request = [[NSMutableURLRequest alloc] init];


NSString* reqBody = [NSString stringWithFormat:@"<tag>Content</tag>"];

NSData* reqData = [reqBody dataUsingEncoding:NSUTF8StringEncoding];

NSInputStream* stream = [NSInputStream inputStreamWithData:reqData];



[request setURL:url];
[request setHTTPBodyStream:stream];
[request setHTTPMethod:@"POST"];

self.wpData = [[NSMutableData alloc] init];
NSURLConnection* conection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

[conection start];

}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

    [self.wpData setLength:0];    

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)d {
NSString* str = [[NSString alloc] initWithData:d encoding:NSUTF8StringEncoding];

NSLog(@"RESPONSE DATA: %@",str);
[self.wpData appendData:d];
}
Run Code Online (Sandbox Code Playgroud)

但是当我使用时,我得到"411 …

objective-c nsurlconnection nsurlrequest ios http-status-code-411

13
推荐指数
1
解决办法
5万
查看次数