如何将 URL 参数添加到 JSON Web 服务调用 - Objective C
Posted
技术标签:
【中文标题】如何将 URL 参数添加到 JSON Web 服务调用 - Objective C【英文标题】:How to add URL parameters to JSON web service call - Objective C 【发布时间】:2012-02-23 16:21:44 【问题描述】:我正在尝试使用 SBJsonParser API 使用此代码从 JSON Web 服务获取信息:
SBJsonParser *parser = [[SBJsonParser alloc] init];
// Prepare URL request to download statuses from Twitter
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://twitter.com/statuses/public_timeline.json"]];
// Perform request and get JSON back as a NSData object
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
// Get JSON as a NSString from NSData response
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
但是我需要在 web 服务 URL 中添加两个参数,用户和密码,以及它们的值,所以 URL 将是“http://twitter.com/statuses/public_timeline.json?user=name&password=test” .我已经搜索了有关 API 的信息来执行此操作,但没有成功。
非常感谢您的帮助。
【问题讨论】:
【参考方案1】:NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://twitter.com/statuses/public_timeline.json?user=%@&password=%@", @"name", @"test"]]];
根据需要用您自己的变量替换 @"name"
和 @"test"
。
【讨论】:
【参考方案2】:我假设你有变量中的值,对吗?如果是这样,只需使用 NSString 的 stringWithFormat: 方法即可。
替换:
@"http://twitter.com/statuses/public_timeline.json"
与:
[NSString stringWithFormat:@"http://twitter.com/statuses/public_timeline.json?user=%@&password=%@", user, password]
【讨论】:
-1 其他答案正确:例如:[NSString stringWithFormat : @"http:\//twitter.com/statuses/public_timeline.json?user=%@&password=%@", @"user", @"pas=?/word"] 将导致:"http://twitter.com/statuses/public_timeline.json?user=user&password=pas=?/word" 没有正确的 URL 转义在这个解决方案中。【参考方案3】:NSString *user = @"user";
NSString *password = @"password";
NSString *urlStr = [NSString stringWithFormat:@"http://twitter.com/statuses/public_timeline.json?user=%@&password=%@", user, password];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString: urlStr]];
【讨论】:
【参考方案4】:你也可以这样做。
NSMutableURLRequest *theRequest = [[NSMutableURLRequest alloc] initWithURL:@"http://twitter.com/statuses/public_timeline.json"];
[theRequest setHTTPMethod:"@POST"] // Or get, push, put
NSString theRquest_Body = [NSString stringWithFormat:@"?user=%@&password=%@",
[user stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
[password stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]],
[theRequest setHTTPBody:[theRequest_body dataUsingEncoding:NSUTF8StringEncoding]];
【讨论】:
以上是关于如何将 URL 参数添加到 JSON Web 服务调用 - Objective C的主要内容,如果未能解决你的问题,请参考以下文章
返回 JSON 响应的 SOAP Web 服务的 URL 格式