以下问题: 我每次都得到错误-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 {
答案 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:@"+"];
}
无论是否存在这些保留字符,都应该正确地百分比转义字符串的参数值。