如何将 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 添加到 tabledit 选择参数

如何删除“在json字符串中?

如何将 json 列表作为参数来休息 web api 服务

返回 JSON 响应的 SOAP Web 服务的 URL 格式

将 JSON 对象发送到 .NET Web 服务时发生内部服务器错误

如何将 URL 参数从 GWT 客户端发送到服务器端进行验证