Unable to create request (bad url?) 解決方案

今天寫一個測試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]];
相關文章
相關標籤/搜索