标签: nsurlrequest

如何使用NSURLRequest/NSURLConnection将mp3文件下载到应用?

情况
在我的应用程序中,我正在使用[NSData dataWithContentsOfURL:URL]的方法下载一个mp3文件(到docs目录),这种方法工作正常,但是关系到CPU,不喜欢下载状态的屏幕更新.所以,我想用不同的方法,这样我可以更新屏幕下载WHILE下载到提醒下载已经开始了用户.

问题
如何设置viewController以使用NSURLRequest NSURLConnection下载mp3文件?(请给出来源)

iphone xcode nsurlconnection nsurlrequest

6
推荐指数
1
解决办法
4万
查看次数

如何使用NSHTTPURLResponse在iPhone上通过HTTP查询文件的最后修改日期?

在我的iPhone应用程序,我需要查询互联网的最后修改日期.m4a通过文件HTTP,但我不要想下载它.

我读苹果文档中关于NSURLRequestNSHTTPURLResponse的,但它似乎是所有与下载文件,而不是首先查询它.也许我错了.

我怎么能知道的最后修改日期.m4a的文件,通过HTTP,下载呢?

谢谢!

iphone cocoa-touch objective-c nsurlrequest ios

6
推荐指数
1
解决办法
4025
查看次数

锁屏中断NSURLConnection

我想知道当用户锁定和解锁iPad屏幕时幕后发生的事情.我有一个使用NSURLConnection下载文件的应用程序,并且下载失败并出现SOAP错误("无法找到指定主机名的服务器"),但是当用户锁定屏幕时却解锁了它.无论错误弹出的事实如何,下载永远不会完成.任何想法为什么以及可以做些什么呢?

NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:300];

NSURLConnection* conn = [[NSURLConnection alloc] initWithRequest: request delegate: self];
Run Code Online (Sandbox Code Playgroud)

据我所知,当我点击Home键时,我得到:

applicationWillResignActive
applicationDidEnterBackground
Run Code Online (Sandbox Code Playgroud)

三分钟后我回忆起应用程序后,我得到:

applicationWillEnterForeground
Run Code Online (Sandbox Code Playgroud)

并且即使在后台,下载已经完成或已经进展.

当我在后台停留更长时间(5分钟)时,它会因错误而超时.

当我锁定屏幕时,我得到相同的应用程序状态顺序,但也有关于下载断开连接的错误消息.

谢谢!

objective-c nsurlconnection nsurlrequest ios

6
推荐指数
1
解决办法
2039
查看次数

iOS任何机构都知道如何向NSURLRequest添加代理?

我正在设置webview,但我需要使用代理加载webview的内容.你们中的任何人都知道如何在NSURLRequest中实现代理?

例如:

    NSString *location=@"http://google.com";
    NSURL *url=[NSURL URLWithString:location];
    NSURLRequest *request=[NSURLRequest requestWithURL:url];
//    some code to set the proxy

    [self.myWebView loadRequest:request];
Run Code Online (Sandbox Code Playgroud)

我真的很感谢你的帮助

proxy uiwebview nsurlrequest ios

6
推荐指数
2
解决办法
9480
查看次数

iOS:将自定义NSURL传递给NSURLProtocol

我需要传递一些额外的信息,UIWebView loadRequest:以便它达到我的实现NSURLProtocol.信息不能绑定,NSURLRequest因为信息也必须保留NSURLRequest mainDocumentURL.所以我用它进行了子类化NSURL和构造NSURLRequest.我已经知道NSURLRequest到达NSURLProtocol startLoading的不是我所提供的实例UIWebView loadRequest,所以我也实现NSURL copyWithZone了,天真地期望URL加载系统将使用它.

现在,NSURLProtocol canInitWithRequest不是人们合理预期的,而是至少4次startLoading.前两次,传入NSURLRequest仍然包含我的自定义NSURL实现.然后叫一个不幸的内部代码CFURLCopyAbsoluteURL询问了absoluteURL我的定制NSURL和下canInitWithRequest(以及随后的startLoading)已经得到了全新的NSURLRequest新鲜NSURL的吧.copyWithZone永远不会被调用,我的子类NSURL丢失了.

在我放弃并实现一个低级且易碎的解决方案并将内容直接附加到URL字符串之前,我想问更高级别的向导,他们是否看到了如何捕获NSURLProtocol雷达上的初始闪烁或如何CFURLCopyAbsoluteURL进入的方法携带我的自定义实例.我试图NSURL absoluteURL通过再次返回我的自定义NSURL类的新实例来破解,但它没有帮助.我已经在NSURLProtocol setProperty功能上看到了一些承诺,但现在看起来很无用.URL加载系统快乐地创建所有内容的新实例,并且NSURLRequest到达时NSURLProtocol似乎与UIWebView仅偶然输入的内容相同.

更新:好的我想保持帖子尽可能短,但即使是第一个回复是要求技术背景,所以我们去:我UIWebView在应用程序中有多个s.这些视图可以同时运行请求,绝对可以运行相同URL的请求.这就像桌面浏览器中的标签.但我需要区分哪个UIWebViewNSURLRequest到达的每个特定的起源NSURLProtocol …

nsurl nsurlrequest nsurlprotocol ios

6
推荐指数
1
解决办法
1358
查看次数

iOS 9上的NSURLConnection不使用HTTP/2协议

我在Jetty 9.3服务器上配置了HTTP/2,它有一个有效的证书和SSLLabs.com给它一个A级安全配置.

使用Chrome浏览到https://example.com加载正确的响应,它还报告使用了"h2"(HTTP/2")协议.

但是当尝试使用iOS 9访问相同的URL时NSURLConnection,我可以在请求日志中看到它使用的是HTTP 1.1.如果我在我的服务器上禁用HTTP 1.1,请求将在iOS 9上失败(但仍然在Chrome上成功).

NSURLConnection代码 -

let url = NSURL(string: "https://example.com")
request = NSURLRequest(URL: url, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: 10)

connection = NSURLConnection(request: request, delegate: self, startImmediately: true)
Run Code Online (Sandbox Code Playgroud)

服务器的ALPN调试输出 -

[S] ALPN protocols [spdy/3.1, spdy/3, http/1.1] received from client for 1e5e2487[SSLEngine[hostname=3.4.5.6 port=52090] SSL_NULL_WITH_NULL_NULL]
[S] ALPN protocol 'http/1.1' selected for 1e5e2487[SSLEngine[hostname=3.4.5.6 port=52090] SSL_NULL_WITH_NULL_NULL]
Run Code Online (Sandbox Code Playgroud)

在WWDC 2015中,有人表示iOS 9中的NSURLRequest支持HTTP/2,但客户端应用程序声称支持spdy/3.1, spdy/3, http/1.1,没有http/2.没有NSAppTransportSecurity例外设置.

我尝试在运行应用程序的同一个iPhone模拟器上使用Safari连接到服务器,这次它工作并使用HTTP/2,这里是ALPN调试输出 -

[S] ALPN protocols [h2, h2-16, h2-15, h2-14, spdy/3.1, …
Run Code Online (Sandbox Code Playgroud)

nsurlconnection nsurlrequest ios http2 ios9

6
推荐指数
1
解决办法
4322
查看次数

UIWebView不会加载带证书的链接(https://前缀)

我知道之前已经问过这个问题,但是我已经看过每一个答案(没有很多),没有人帮助我.

我遇到的问题是我的学校电子邮件服务处理证书.这两个电子邮件服务的链接如下:

主校电子邮件: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没有检测到网站上的文本框

iphone ssl-certificate uiwebview nsurlrequest ios

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

NSURLRequest超时IOS

我需要使用UIRequest设置超时15秒或30秒,但它始终采用默认值.有没有办法设置连接的最小超时.

iphone nsurlconnection nsurlrequest ipad ios

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

在iOS中从URL加载UIImage

我试图UIImage从其URL completionplaceholder图像加载一个,但既UIImage没有UIImage加载占位符也没有加载占位符.

这是我的代码:

  NSURL *url = [NSURL URLWithString:@"http://assets.gearlive.com/tvenvy/blogimages/stewiegriffin.jpg"];
  NSURLRequest *request = [NSURLRequest requestWithURL:url];

  [self.imageView setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"bg.png"]

      success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
          imageView.image = image;
      } 
      failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {}
   ];
Run Code Online (Sandbox Code Playgroud)

objective-c nsurlrequest imageurl ios swift3

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

数据不是通过3G从后台发送的

我有一个应用程序,当应用程序在后台时,它将数据发送到服务器.以下是负责数据发送的代码:

-(bool) sendStats: (MCStatsSender*) val{

    if(![self checkInternet]){ //Using Reachability here

        return false;
    }

    NSDictionary *inputData = [NSDictionary dictionaryWithObjectsAndKeys:
                               self.propertyA.value, "key1",
                               val.data, "key2",
                               nil];


    [myNetworkManager doRequest:[myRequestManager createWithStringAndDictionary:MY_URL Data:inputData handler:myHandler user:val]];
    return true;
}
Run Code Online (Sandbox Code Playgroud)

所以这inputData是一个带字符串的简单字典.

一种方法doRequest基于NSURLSession,基本上如下所示:

-(void) doRequest: (MCRequest*) request{

    [tasks addObject:request];

    if(m_session == nil){
        NSURLSessionConfiguration* config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:[NSString stringWithFormat:@"key-%lu",reqid]];
        m_session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];
    }

    NSURLSessionDataTask* task = [m_session dataTaskWithRequest:request.generatedRequest];
    request.reqId = task.taskIdentifier;
    [task resume];  
}
Run Code Online (Sandbox Code Playgroud)

正如我所说,一切都通过Wi-Fi工作,应用程序进入后台,几分钟后,自定义蓝牙设备发送一些数据并从挂起模式唤醒应用程序.iOS应用程序收到数据后,如果设备通过3G连接,则无法将其发送到服务器.我很肯定通过蓝牙发送的数据是收到的,因为它存储在本地数据库中.

另外还有一个重要的事实.如果应用程序通过Xcode运行,即使设备通过3G连接,应用程序也会从后台发送数据.为此,我运行一个应用程序,然后点击"主页"按钮将其置于后台.

不知道有什么区别,以及为什么app通过电缆连接到Mac时会有不同的行为,为什么数据不通过3G(甚至2G)发送?

附加信息:

我不是要上传文件,而只是将JSON发送到服务器.

objective-c nsurlrequest ios nsurlsession background-mode

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