2016-07-12 44 views
0

轉換的NSString NSURL錯誤轉換的NSString NSURL的Xcode 8錯誤代碼256

這是我的代碼,但我reciving空結果

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); 

這裏是我的錯誤

錯誤域= NSCocoaErrorDomain代碼= 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}

回答

0

在沒有特定的順序:

  • stringWithContentsOfURL方法是旨在被用於取回網絡網址。您應該使用NSURLSession API。
  • 你不能任意URL編碼這樣的URL。我懷疑你只想編碼q參數的內容,並可能編碼env參數的內容。你必須分別對它們進行編碼,然後連接它們。如果您嘗試編碼整個字符串,您的URL將以http%3A%2F%2F開頭....
  • 這不是編碼URL查詢字符串數據的好方法。除此之外,它不會編碼一串特殊字符,這些字符在查詢字符串中在技術上是合法的,但會導致錯誤行爲(例如等號和和號)。相反,這樣做:

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

    或做stringByAddingPercentEncodingWithAllowedCharacters:和一個自定義NSCharacterSet等同。