错误将NSString转换为NSURL Xcode 8错误代码256

时间:2016-07-12 21:06:18

标签: jquery nsstring nsurl xcode8-beta2

将NSString转换为NSURL

这是我的代码,但我收到了空结果

NSString *Mystr = [NSString stringWithFormat:@"http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in (\"USDEUR\")&env=store://datatables.org/alltableswithkeys"];




NSURL *URLOne = [[NSURL alloc] initWithString:[Mystr stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];

NSError *error1;
NSString *strresult = [NSString stringWithContentsOfURL:URLOne
                                                encoding:NSASCIIStringEncoding
                                                   error:&error1];


NSLog(@"%@", strresult);

这是我的错误

错误Domain = NSCocoaErrorDomain Code = 256“无法打开文件”yql“。”的UserInfo = {NSURL=http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22USDEUR%22)&env=store://datatables.org/alltableswithkeys}

1 个答案:

答案 0 :(得分:0)

没有特别的顺序:

  • stringWithContentsOfURL方法旨在用于获取网络网址。您应该使用 NSURLSession API。
  • 你不能随意对这样的网址进行URL编码。我怀疑你只想编码q参数的内容,可能还要编码env参数的内容。你必须单独编码,然后连接它们。如果您尝试对整个字符串进行编码,则您的网址将以http%3A%2F%2F ....
  • 开头
  • 这不是编码URL查询字符串数据的好方法。除此之外,它不会编码一堆在查询字符串中技术上合法的特殊字符,但这可能导致错误行为(例如等号和符号)。相反,这样做:

    NSString *qParameterEncoded =
        (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(
            kCFAllocatorDefault,
            (__bridge CFStringRef)qParameter,
            NULL,
            CFSTR(":/?#[]@!$&'()*+,;="),
            kCFStringEncodingUTF8);
    

    或使用stringByAddingPercentEncodingWithAllowedCharacters:和自定义NSCharacterSet执行等效操作。