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]];
相关文章
相关标签/搜索