假设我有一个像:
这样的网址NSString *urlString = @"https://mail.google.com";
我想指定此URL的查询组件,所以我这样做了:
NSURLComponents *components = [[NSURLComponents alloc] initWithString:urlString];
[components setQuery:@"guid=56d962c7e4b0b00655a669a2"];
NSLog(@"%@",urlString);
NSLog(@"%@", components.query);
第一个日志显示https://mail.google.com
,这不是我想要的,但第二个日志显示guid=56d962c7e4b0b00655a669a2
。我不明白第一个日志的输出,如果第二个日志显示添加了查询组件,为什么第一个日志不打印呢?我真正想做的是对URL https://mail.google.com?guid=56d962c7e4b0b00655a669a2
进行NSMutableRequest,但是当我在上面的代码之后执行该操作并记录NSMutableRequest的结果时,它表示缺少必需的参数。我如何处理这个问题。任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
如果要从NSURLComponents获取URL,请使用NSURLComponents的“URL”属性。
NSString *urlString = @"https://mail.google.com";
NSURLComponents *components = [[NSURLComponents alloc] initWithString:urlString];
[components setQuery:@"guid=56d962c7e4b0b00655a669a2"];
NSLog(@"%@", components.URL); // Should log: "https://mail.google.com?guid=56d962c7e4b0b00655a669a2"
NSLog(@"%@", components.query);
NSURL *url = components.URL;
或者,您可以将queryString附加到字符串的末尾,然后将整个内容转换为NSURL:
NSString *queryString = @"?guid=56d962c7e4b0b00655a669a2";
NSString *urlString = [@"https://mail.google.com" stringByAppendingString:queryString];
NSURL *url = [NSURL URLWithString:urlString];
NSLog(@"%@", url.absoluteString);
答案 1 :(得分:0)
你为什么不这样试试?
NSString *query = @"guid=56d962c7e4b0b00655a669a2"
NSString *urlString = [NSString stringWithFormat:@"https://mail.google.com?%@",query];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
因此,每次要更改查询时,都可以更改查询字符串,然后请求也会更改。