【问题标题】:Bad URL Error With NSURLRequestNSURLRequest 出现错误的 URL 错误
【发布时间】:2012-07-06 12:24:19
【问题描述】:

接下来我创建了一个 NSURLRequest:

NSString *url=[NSString stringWithFormat:@"http://myserveradress.com/api/users/register?register_password=%@&register_password_confirm=%@&register_email=%@&register_terms=1&register_user=%@&process_registration=1&register_name=%@"
                   ,
                   [password stringByReplacingOccurrencesOfString:@" " withString:@"%"],[confirm stringByReplacingOccurrencesOfString:@" " withString:@"%"],[email stringByReplacingOccurrencesOfString:@" " withString:@"%"],[user stringByReplacingOccurrencesOfString:@" " withString:@"%"],[realName stringByReplacingOccurrencesOfString:@" " withString:@"%"]
                   ];
    NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:url]];
    NSError *error;
    NSData *data=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];
    NSString *result_string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    return result_string;

结果字符串为http://myserveradress.ru/api/users/register?register_password=password&register_password_confirm=password&register_email=myname@mail.com&register_terms=1&register_user=myname&process_registration=1&register_name=Artem%Kulikov,错误状态

Error Domain=NSURLErrorDomain Code=-1000 "bad URL" UserInfo=0x71e62b0 {NSUnderlyingError=0x71e6470 "bad URL", NSLocalizedDescription=bad URL}

在浏览器中链接工作正常。问题仅出在应用程序中。

【问题讨论】:

  • 你试过把它输入浏览器吗?

标签: objective-c ios cocoa-touch url nsurlrequest


【解决方案1】:

这不是转义字符串的正确方法,有一种方法,stringByAddingPercentEscapesUsingEncoding:。所以改成:

NSString *url = [NSString stringWithFormat:@"http://myserveradress.com/api/users/register?register_password=%@&register_password_confirm=%@&register_email=%@&register_terms=1&register_user=%@&process_registration=1&register_name=%@"
                   , password, confirm, email, user, realName];
NSString *properlyEscapedURL = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:properlyEscapedURL]];

更不用说正确的空格转义码是%20 而不是%

【讨论】:

  • 好人.. +1 回答。在 url 请求中遇到法语字符。
【解决方案2】:

@user1506704,你没有使用 register_name 中的编码方式,register_name 中是否有空格或其他特殊字符?使用NSString方法stringByAddingPercentEscapesUsingEncoding:.

您可以尝试转义 URL:

- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding` 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2014-08-05
    相关资源
    最近更新 更多