标签: nsurlrequest

NSDate到RFC 2822日期格式

有没有有效的方法将NSDate转换为RFC 2822日期格式字符串?我想使用此字符串创建NSURLRequest并设置"If-Modified-Since"标题字段的值.

nsdate nsdateformatter nsurlrequest ios

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

检测目标C中PNG文件是否已损坏

我正在使用NSURLRequest下载jpgs和png.这工作正常,但有时文件已损坏.我见过捕获错误:损坏的JPEG数据:数据段的过早结束,并且这适用于jpgs.有没有人知道为png做同样的方法?即以编程方式检查png数据是否有效......

png corrupt objective-c nsurlrequest

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

从实时流播放视频,同时还将流保存到iOS上的磁盘

我一直在研究这个话题一段时间,我无法弄清楚我是如何实现这一目标的.假设我们有来自HTTP Stream的视频,我希望能够在我的应用中播放该视频,同时视频也会保留在磁盘上.我知道我可以使用AVFoundation或MediaPlayer框架播放视频,我可以通过加载文件/流 NSURLRequest.

然而,这是两个不同的过程,需要加载视频两次.我无法弄清楚是否以及如何将这两者结合起来.这可能/可行吗?

streaming objective-c avfoundation nsurlrequest ios

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

UIWebview didReceiveAuthenticationChallenge

我正在使用webview加载网站.我设法运行应用程序.但我的问题是,如果我输入错误的密码,我无法加载网站,它只显示一个白色的屏幕.

如果我传递了正确的用户名/密码,它将加载网站.有没有办法处理我的身份验证用户名/密码是正确还是错误?

我正在使用此代码.

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodNTLM])
{
    NSURLCredential *credentail = [NSURLCredential
                                   credentialWithUser:@"username" 
                                   password:@"Password"
                                   persistence:NSURLCredentialPersistenceForSession];
    [[challenge sender] useCredential:credentail forAuthenticationChallenge:challenge];
}}
Run Code Online (Sandbox Code Playgroud)

上面的代码中包含正确的用户名和密码.如果我将用户名更改为"用户"或密码为"通过",我无法加载该网站.如何捕获身份验证错误?

谢谢.

xcode nsurlconnection nsurlrequest ios

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

IOS - 使用NSURLRequest在HTTP标头中进行令牌身份验证

我在使用HTTP令牌身份验证时遇到了一些麻烦NSMutableURLRequest.我做了一些研究并使用了以下问题: ios从NSURLRequest/HTTP请求管理身份验证令牌,以了解如何在HTTP头中设置令牌.但是,我需要设置的令牌不仅仅是一个带有值的简单头字段.我需要将http头字段(或多个)设置为如下所示:Authorization: Token token="tokenHere", nonce="def".以下代码片段是我尝试失败的事情的示例:

//failed to authenticate with server
[request setValue:@"tokenHere" forHTTPHeaderField:@"token"];
[request setValue:@"def" forHTTPHeaderField:@"nonce"];

//failed as well
NSDictionary *authToken = [NSDictionary dictionaryWithObjectsAndKeys:
                           @"tokenHere", @"token",
                           @"def", @"nonce",
                           nil];

[request setValue:[NSString stringWithFormat:@"Token %@", authToken] forHTTPHeaderField:@"Authorization"];

//failed again
[request setValue:@"Authorization: Token token='tokenHere', nonce='def'" forHTTPHeaderField:@"Authorization"];
Run Code Online (Sandbox Code Playgroud)

后端服务器在ruby中编程,并且期望单个头部看起来就像上面的例子.我需要一些帮助来制作这个值,以便它与后端一起工作.

iphone objective-c nsurlrequest http-headers ios

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

NSURLSession委托方法未调用

我创建了一个非常简单的应用程序来从我的Web服务器下载文本文件.我有这个与NSURLConnection完美配合,但我正在尝试迁移到NSURLSession.

我遇到的问题是没有调用任何委托方法.

我的服务器受密码保护,因此我需要使用基本的http身份验证来访问该文件,但是从未调用didReceiveChallenge方法.

代码行[getFileTask resume]似乎对任何事都没有影响.

我的设置如下:

@interface ViewController : UIViewController <NSURLSessionDelegate, NSURLSessionDownloadDelegate, NSURLSessionTaskDelegate>
{
   NSURLSession *session;
}
Run Code Online (Sandbox Code Playgroud)

从viewDidLoad调用以下方法:

-(void)setUpTheNetworking
{
    NSString *fileURL = @"www.mywebsite.com/utility/file.txt";

    NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
    sessionConfig.allowsCellularAccess = YES;
    sessionConfig.timeoutIntervalForRequest = 10;
    sessionConfig.timeoutIntervalForResource = 10;
    sessionConfig.HTTPMaximumConnectionsPerHost = 1;

    session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil];

    NSURLSessionDownloadTask *getFileTask = [session downloadTaskWithURL:[NSURL URLWithString:fileURL]];

    [getFileTask resume];
}
Run Code Online (Sandbox Code Playgroud)

我实施的委托方法是:

-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
{
    NSLog(@"Here we go");
}

-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes
{
    NSLog(@"Here we go");
} …
Run Code Online (Sandbox Code Playgroud)

nsurl nsurlconnection nsurlrequest nsurlsession

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

NSURLRequest不在Yosemite Today Extension上工作

我正在尝试创建一个Yosemite Notification Center小部件供我个人使用.它应该使用NSURLRequest和NSURLConnection从服务器获取一个数字,并在标签中显示该数字.我在普通的Objective-C Cocoa应用程序中工作,所以我认为我的代码没有问题,但是我无法获得完全相同的代码来处理今天的扩展.这是我得到的错误:

2014-11-04 13:07:00.178 B-Web mobile downloads[854:39027] ***storageTaskManagerExistsWithIdentifier:withIdentifier failed: Error Domain=NSCocoaErrorDomain Code=4099 "Couldn’t communicate with a helper application." (The connection to service named com.apple.nsurlstorage-cache was invalidated.) UserInfo=0x60000026e6c0 {NSDebugDescription=The connection to service named com.apple.nsurlstorage-cache was invalidated.}; {
    NSDebugDescription = "The connection to service named com.apple.nsurlstorage-cache was invalidated.";
}
Run Code Online (Sandbox Code Playgroud)

今日推广的.m就在这里.我从中获取数字的URL是我的实际代码,但我在那里隐瞒了它.您知道,响应字符串和标签在.h中声明.为什么这不适用于Today Extension?难道我做错了什么?

objective-c nsurlconnection nsurlrequest osx-yosemite

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

NSURLSessionTaskPriority似乎被忽略了?

在此示例中,我NSURLSessionDataTask以默认优先级启动100 ,但随后将最后一个设置为高优先级.然而它似乎完全没有效果,因为最后一个任务仍然最后运行.

NSURLSession *session = ...
NSURLRequest *request = ...

for (int i = 1; i<=100; i++) {
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        NSLog(@"%d", i);
    }];
    if (i == 100) {
        dataTask.priority = NSURLSessionTaskPriorityHigh;
    }
    [dataTask resume];
}
Run Code Online (Sandbox Code Playgroud)

为什么具有高优先级的此任务在默认优先级的其他99之前运行?我希望在添加高优先级任务之前可能会开始执行一些早期任务,但不是全部.

我甚至尝试将HTTPMaximumConnectionsPerHost设置为1,没有任何区别.

objective-c nsurlrequest nsurlsession nsurlsessiontask

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

函数与dataTask返回一个值

我不想检查我的url statusCode是否等于200,如果statusCode等于200,我创建了一个返回布尔函数的函数,我正在使用dataTask,但我不知道如何返回一个值:

class func checkUrl(urlString: String) -> Bool{

    let urlPath: String = urlString
    var url: NSURL = NSURL(string: urlPath)!
    var request: NSURLRequest = NSURLRequest(url: url as URL)
    var response: URLResponse?

    let session = Foundation.URLSession.shared


    var task = session.dataTask(with: request as URLRequest, completionHandler: {(data, response, error) in
        if let error = error {
            print(error)
        }

        if let data = data{
            print("data =\(data)")
        }
        if let response = response {
            print("url = \(response.url!)")
            print("response = \(response)")
            let httpResponse = response as! HTTPURLResponse …
Run Code Online (Sandbox Code Playgroud)

nsurlrequest swift

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

反向工程师HTTP请求

我截获了一个来自Charles的来自iPhone的Instagram请求到Instagram,这里是标题

POST /logging_client_events HTTP/1.1
Host: graph.instagram.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Connection: keep-alive
Accept: */*
User-Agent: Instagram 10.0.1 (iPhone8,1; iOS 10_1_1; en_IN; en-IN; en; scale=2.00; 750x1334) AppleWebKit/420+
Accept-Language: en-IN;q=1.0, hi-IN;q=0.9,
Content-Length: 1601
Accept-Encoding: gzip, deflate
Run Code Online (Sandbox Code Playgroud)

在压缩的请求中也有Post数据.我的问题是如何解压Post数据?也许NSData中可以解压缩的任何方法?

编辑:这是完整的HTTP请求

POST /logging_client_events HTTP/1.1
Host: graph.instagram.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Connection: keep-alive
Accept: */*
User-Agent: Instagram 10.3.0 (iPhone8,1; iOS 10_1_1; en_IN; en-IN; scale=2.00; gamut=normal; 750x1334) AppleWebKit/420+
Accept-Language: en-IN;q=1, hi-IN;q=0.9
Content-Length: 4585
Accept-Encoding: gzip, deflate

message=eNrtXG1v4kgS%2FiunfLqTAupXtzvSfiAxZInOZsmQEPt0sowxYGNj1jZDYLX326%2FaMBNICJMsZCajTUZRwO6XqvJT1c%2FTtuePE286dcP%2BydkJJgwRxgUjumCYnZyezMrjCD4VYRKcnGGmU0GIQKiKGEWUnZa9PweZ6o6qtIr%2B8U%2BmIYGEwP%2BCbv3gc%2BgH6%2BHPBdcb51rFuJCNCmsYuKJf6EZFq%2BlMN2pGDV0I6DLwkjBeuJs9Gb1gBqnXK3rDqFfAPKMi8UWtYvCaIKyGOZM16JkHeR6mk1Wf8xqqo4sGhuYNvcIouaicn2ukQhr8HLzQ5LlGlYFe4Z2c%2FeePkyTtz2JwUTkExyee8vdkHvTy1B8Hheunk0ngF65XFEEyLR6HRJOkyhETQp6eBPdFBoP%2BcTIdwxCE6IxSHWvs5M8%2FT5%2BbKBy6vwducD9N81kW7Bxdl4xvDD7M0tkUehZBXrhgZOjFysgCGrgQBD8Og4kys4zGhhGnT8xSg06DDCaEDqUpYZq7gyDou7NB6GZBP8jD4eRg8zmjz9h%2FgJm59zk40DJJBZI7LMvSOE5nhxq3CmSRpnERTh9ZujoFneJwEjzYnAVB7IIxCzdMptkK1bss1zHBSGxYXvYBT8NC9ThDu%2ByMQ7CpnMFPZ8pYaFX220of1vOQlJT3PU2ygAVSoCDQexj7cuB5PoGBklkB1j8ayXOfzjjycjdZlC3LNp%2FDYP605ySYPz4U5u6Xo%2BD3kUMnNKy%2Fy9BxRDgl6L0GjhCKtPcYOCw1LHWpi3cbOU0I%2Bh4jxwXXpIDL%2Bl4jR%2BHL%2B0xWiTSJEf3ekQsneeENMy9x02zoTULfzWe9b0WRYUQ2gpinswwYVjpwPX8VxyezJS5YiNXf8P6ZMH9JPqYLKAyA8cdE7KG1SwhCmoHrFUSpVmE65hXJiKzUmDwX9QuBGoZWzroekmANuCb0pPCLMMLu1jTghz8OJ0NYXMeBMj9YXC29bn9m311jP7kJW2Ez%2FPfF1dy%2Bi%2FMeaYyb0VQ0k3h5Rxozu3vP%2B5dx5GOJ%2FKQReeRWnUf%2B5DaGPkvn7orA76B%2FKTOny9RY95YxXFrLOrIMe2EZTTIw6siM6sSM%2FLnZsZG5rBPLqN2bRkM3oyazDHPZMuDYr3NiR7W5Y9jEurSxZViRc2mFrc7VuHXZntvLm3tzeTuyl6NRq9tcOJGN7ChO7ATmjBqh1akRK7LnLaMxhvMwvjW2E5s1w3nYv7udOhdNrRn53InaBNou7K4zbnXgcxfGTG4jJ2kvra6JreUNjNskZqe9AHsX1rIG47eXpe1GfW5%2BupLgu%2FIb4ihnzSjFg%2FYvvyhWrrjQ3AXUFbNcIaX8DsE%2FjHsBJoXcxQo79U%2BdQ8nr57AfpK4fxLHrzYp0GkPy92bDAWB52%2BiV1niwe831FYT9kTcZ7jZdSkz2sf3TjXGUlAgH4dYxlbLFYqomvOhce%2F0wrfk%2BZE4n8EeTNE6Hi18%2FGb%2FVngY4Dn2vWCX52uDYm038kTvLvV6801hJgVNsqoe1yxCw30bpJNBPMXRL85WMw1X1LZyEBaSWux48gZOYy6rATEisqbKn3H%2Fq9Zd%2BE8BL2QlxGFAirlP40TQQjT1IXHWlJ31XtT45G3hxHjx0VQUJqrfqrWFRFZqmC45AnGJNf2i1crdspUtcZYKXhjGuYfqCoE1n%2BQiMLOC6rE7BylAUCtK7AsigdG1Wz57XHwYwc5HNwHAvDrLi67dcefb1246aCZpZZdKuS1eO605mSU%2BJaii5sQf67snRzJt%2FNfdM7MnBfpgp2ToLXciSwU7XBCZiExuDMIMppx7gfu0CrCqzWKVXPishujMP1XpXLk299F7Ns4J2Fvw%2BUwq1nBaOpgXo1P4sW12MM03yPcZngRerjipVcj8Le8E%2B%2FS2FBgDbcORrd0j%2B0IfxZnmQVfo5qTwY%2Fj%2By05nHM09LgHgxHO8voKSFubrcJWz32F%2Fq8UnhxqnXD%2Fo7bdYZQZs2f%2BmyDt90lBbpTgs3x15F9wwyF2LAOWFSSp0gjT40g5WiGAFUONpj78N2Rz%2Fsu%2Bk02EEkaFVyjW9JgFfsczy9ojvCwqqUUV2KvcX1hRf3lUQ0CwYA9tEumxgVQtP32nQ0zjkHLrnOtcEs%2FpKGO5noptlfUDMJinmajU9eSkLl42HWcGJaWRtQ%2BaMh%2FojkHpPlQ3w5FpQ8z%2FLpj1OWXFAJRIXoj2k%2BfkWED6L5iRdOVqxmD0Kh%2FGl4u%2F7lJffw07ivVpysgDEKf7SzoKy4HRjcV1MDVd%2BXx%2BWmsbIujstKnu%2ByR6dsfw4PehvjQCUocf4XBdA%2BcPEqSDQh5VupH5iDalIyio6qfiB%2BkhMuIAmRjqi7Nc0u9bPF3JWK%2BaYamlixP3FiP5aoR4q4FyolUUctw6SgYEirY3Jr6egrxQDqxxhjM7qhoIIWpjGcm3S%2BMKMhKB%2BTKRUBimhhdYb3ZtSmLaOf2F2lgGrcItdjk0CbaBRb3Zt767IRgWpatDo3S%2BvyOjSN25G1HHOrcwuqyEdWtxFZl%2FW51QFldGkqu6eg1Ea9pJEHd9dTm1qD%2Fq9XIxtsVuoHPmPn04YaSurUvFRKChTU0kocpXK61siM%2Bgkoqhj%2BhjAfKn14zrfFlXyl%2BnkxWFdL4HS1Q78LrJJpfw2sL1PoquNq%2BjMCpIEzqm5eYCY1rn8I8J9ZgL9qw2i9dn2zdEqdvg6Nz1v7gNRduHwp8p6i%2FAOL3wuLB%2BgdXuVcl1sc5TC9owuNcK2U%2FRTUn%2FZKvfMCewWMLI9mL0NIMkkFCDRo9gJ5dhT6o1Up4tv3OF9Nf%2FYtLQQxSoSG9OOyH0AKXF%2FEKcKYcndzlh9BflirYzNraQMpMSHD60vr7jH5sbnTGUJmQmYvx3Oze4PtTj80gciYBLK0cx1bSXthL60I%2Fo1tYlKr40Sm0ZxDJcGQ%2FcRW5KdTh6rgjFQGty6b34P8PPXt06vJzwj0fKr2WhfJYP30gNrb29CBfpokwaSvzoBW%2FxZkCSF4r3pYPZ1CYIXgjAssHvagnjVl656RFw%2FTLCxGyVengix3H46%2BsXtQucgL%2FKOQBpQTTfBX%2BYd%2FuH8gsrWXXD8oA1AWQem8yj%2By7Z%2FarXQzbzJ%2B1r9XFX6tyiRQDXG0wg%2FsWpdclBtzmKoHpx5XfinfQEuIKpFcZ%2FhnEL5bmoRwXRMCwbKlCZ2QD1n8t5DFL9AjCtEaouJjK%2BcDs%2B8Cs%2FvByghUsoPASvaBdePxk%2BNhVehch%2FVYEPiCBIywMcsPgKrPAIZzuKRwTknsGgUJ%2FQiqFpDoxtjstplFmthOGqHT8e%2FtTmNkR6OxgoDVuQZJPeROtxG2jPHcAahanThRnxUdb3Vux3b3BjnGVWR2AeCdm%2B8A1R2%2BXfyYXUcB0lwAzfwJNOIGUcBVrHON6QgopA5Vln0oyJ9YQR6XJ3C12vKPPY8PxL4dYl8lKgGSsLSS4%2B0mIoAGI7S8QY8Zpk%2F3EzVMDng%2BT1fPkyB%2B%2FJc2wAd1KzyfppM8zSAFY68XxErkfw6y%2FKD3OfQqIUKQNzB6%2FThhmqkHqsrHC4P5NM3UNRkOD4SGXqVUbD1fduh2g0YkxuWDQAA89VbSqzbGvx1lxgEZ2ptAI1x7nrqjcDiK4bd4DhpHoT56lYNZVPsJWPoG9UFV9QCqDiuE2uAB1v7B4f8OHH4f59GrwBw0chDnYXs5j65qKxXiyKRHI5rOOdQqwojmbk3zHcHa%2F8p6LHXMuMGtzpibUXthTR6D9Ta0uzazI8VynLGdXIV2p4nUPgiwHdS6tACw1xGwHYBQY%2BR04XPHiR3DX9qJAqpJHWNIACwwd3PRMtrcSerfBKsDx31ykzcnt9jrtsHXq5G1PA%2FNxFZAXDqJuu%2FcgLma1Insewf%2B2pHPLaPGzNX9adZS96ujIbbAt1Zpsx0O7tCbsR5ZRYKgIy5t6gU5QAyQHqxID%2FtON1FlVTABMx%2BSXPzHJBfGnHDJOOLsfSTXPVTmBQAQaH8NP1kJLq9CVelNVdWXQ%2BokbSUxVHIxc9kGMI8XZqKSq87MLlT6y%2Fa93W1je3kFssOcW0lz6VzeLCDhIAmdEFYPkBW175ZcICXU5iMcv4EVq%2F3GyaVrkqMjSgoGDeQ6u7g4ZnI9T8HK%2F0%2BASibJz7BybXMwiBaVYLxAAutU%2F1jYfuaF7Rksqzdn1OszvsqDMqFyN1N3wrOnObnGsvjWywvr3usnnv97egIq8kvOrv7vBjf4vMqVPPgdoPbn%2FwGSB1Nz&compressed=1&access_token=124024574287414%7C84a456d620314b6e92a16d8ff1c792dc&format=json
Run Code Online (Sandbox Code Playgroud)

reverse-engineering nsurlrequest

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