今天寫一個測試demo,遇到以下問題:瀏覽器
Error Domain=ASIHTTPRequestErrorDomain Code=5 "Unable to create request (bad url?)" UserInfo=0x69ba0f0 {NSLocalizedDescription=Unable to create request (bad url?)}
功能是爲了測試分包下載,大概流程:請求URL,服務器返回一套URLList,本身分別去請求每一個url最後把獲得得數據進行拼接。服務器
每一個url以下:測試
http://sandbox.kaka.com/zinx-nj/%2Fbook%2Fb663c2f03f7b36f4f830979e63f2b0%2F20m_by_5m%2Fmain_1.zip?sign=MBOT:DIoOACjY2prt9jy4i84mGUps9qF941:9BRgIQ1btIaa5CZpZ94Mwm42vE%3D&time=1402132737
在獲得URLList之後,對每個url進行請求得時候,就發生了這樣得錯誤,可是把連接複製到瀏覽器能夠正常使用,還有就是若是把連接複製出來,在代碼中一字符串名文得方式指定也能夠:url
NSString *urlString = @"http://sandbox.kaka.com/zinx-nj/%2Fbook%2Fb663c2f03f7b36f4f830979e63f2b0%2F20m_by_5m%2Fmain_1.zip?sign=MBOT:DIoOACjY2prt9jy4i84mGUps9qF941:9BRgIQ1btIaa5CZpZ94Mwm42vE%3D&time=1402132737"; [self rquest:[NSURL URLWithString:urlString]];
上網查了,大多數人是說其中有中文,須要使用:spa
url=[url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];code
可是很顯眼在以上url中沒有中文,結果在網上找了各類方法試都無效,最後解決方法:component
NSString *temp = [URLString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSArray *array = [temp componentsSeparatedByString:@"?"]; NSString * encodedString = (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge_retained CFStringRef)array[1], NULL, (CFStringRef)@"!*’();:@&=+$,/?%#[]", kCFStringEncodingUTF8); NSString *resultURL = [NSString stringWithFormat:@"%@?%@",array[0],encodedString]; [self request:[NSURL URLWithString:resultURL]];