错误域= NSURLErrorDomain代码= -1000"错误的URL"

时间:2014-05-21 20:18:36

标签: ios http request send

以下问题: 我每次都得到错误-1000,但真的不知道我能改变什么。我用GET和另一种发送方法尝试过。但我每次都得到同样的错误。 有人看到我的错误吗? 感谢

NSString *get =[[NSString alloc] initWithFormat:@"mobileNumber=%@&deviceToken=%@",myMobileNumber,myDeviceToken];

[get stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"http://myHomepage.net/login.php?%@",get]];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];


NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *response = nil;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *responseData = @"";
if ([response statusCode] ==200 )
{
    responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
    NSLog(@"---------responseData: %@",responseData);
    return responseData;
} else {

1 个答案:

答案 0 :(得分:1)

您未保存stringByAddingPercentEscapesUsingEncoding的结果。所以,而不是:

[get stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

你需要:

get = [get stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

仅供参考,虽然上述修复程序现在成功地转义了URL中不允许的所有字符,但实际上某些字符在URL中是可接受的,但在参数值中是不可接受的(例如{{1} }被解释为空格,或+描述参数。)

以百分比形式转义请求参数中使用的值非常重要,这样您不仅可以转义URL中不合法的字符,还可以转义URL中合法的一些字符,不允许在参数值中。

不幸的是,标准&方法不会这样做。但是stringByAddingPercentEscapesUsingEncoding函数CFURL可以。您将此函数应用于各个参数值​​。这是一个在此函数和ARC之间执行必要的免费桥接的方法:

CFURLCreateStringByAddingPercentEscapes

您可以按如下方式使用此方法:

- (NSString *)percentEscapeString:(NSString *)string
{
    NSString *result = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                                                 (CFStringRef)string,
                                                                                 (CFStringRef)@" ",
                                                                                 (CFStringRef)@":/?@!$&'()*+,;=",
                                                                                 kCFStringEncodingUTF8));
    return [result stringByReplacingOccurrencesOfString:@" " withString:@"+"];
}

无论是否存在这些保留字符,都应该正确地百分比转义字符串的参数值。