繁体   English   中英

错误域= NSURLErrorDomain代码= -1000“错误的网址”

[英]Error Domain=NSURLErrorDomain Code=-1000 “bad URL”

问题以下:我每次都会得到-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 {

您没有保存stringByAddingPercentEscapesUsingEncoding的结果。 因此,代替:

[get stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

你需要:

get = [get stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

仅供参考,尽管上述修复程序现在可以成功地百分比转义URL中不允许的所有字符,但实际上,URL中确实有一些可接受的字符,但参数值中不可接受某些字符(例如+解释为空格) ,或&表示参数)。

重要的是,以百分比方式转义请求参数中使用的值,以使您不仅转义URL中不合法的那些字符,还转义URL中不合法但不允许的一些字符在参数值内。

不幸的是,标准的stringByAddingPercentEscapesUsingEncoding方法没有执行此操作。 但是CFURL函数CFURLCreateStringByAddingPercentEscapes可以。 您可以将此功能应用于各个参数值​​。 这是一种在此功能和ARC之间执行必要的免费电话桥接的方法:

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

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

NSString *get =[[NSString alloc] initWithFormat:@"mobileNumber=%@&deviceToken=%@", [self percentEscapeString:myMobileNumber], [self percentEscapeString:myDeviceToken]];
NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"http://myHomepage.net/login.php?%@",get]];

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM