我在为我的代码行添加参数时遇到了一些麻烦。我已经创建了一个可以访问此变量的全局变量,并使用NSLog来验证它是否可访问但是我在添加变量时遇到了麻烦。
我的代码行是这个,我想添加一个已经定义为变量“ttt”的tran_id,它是NSString
。我现在在代码中使用它的方式不起作用。
NSLog(@"tran id: %@", ttt);
[request setHTTPBody:[@"{\n \"partner_key\": \"VxYkMw3N8E\",\n \"auth_token\": \"QaU9QcFZ6xE7aiRRBge0wZ4p6E01GEbl\",\n \"tran_id\": \"%@\"\n}", ttt dataUsingEncoding:NSUTF8StringEncoding]];
答案 0 :(得分:1)
我认为你不能在setHTTPBody方法中设置params,你需要的是在之前有一个NSStringWithFormat:
NSString *body = [NSString stringWithFormat:@"{\n \"partner_key\": \"VxYkMw3N8E\",\n \"auth_token\": \"QaU9QcFZ6xE7aiRRBge0wZ4p6E01GEbl\",\n \"tran_id\": \"%@\"\n}", ttt];
[request setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding]];
当然,这是一种快速肮脏的方法 - 因为您要发送JSON数据,请考虑了解NSJSONSerialization
的工作原理。
答案 1 :(得分:0)
使用stringWithFormat:
[request setHTTPBody:
[NSString stringWithFormat:@"{\n \"partner_key\": \"VxYkMw3N8E\",\n \"auth_token\": \"QaU9QcFZ6xE7aiRRBge0wZ4p6E01GEbl\",\n \"tran_id\": \"%@\"\n}", ttt]
dataUsingEncoding:NSUTF8StringEncoding]];
我怀疑你需要\n
和那里的空白 - 它们通常只是为了让它更具人性化。这将使您的格式字符串更容易破译:
[request setHTTPBody:
[NSString stringWithFormat:@"{\"partner_key\":\"VxYkMw3N8E\",\"auth_token\":\"QaU9QcFZ6xE7aiRRBge0wZ4p6E01GEbl\",\"tran_id\":\"%@\"}", ttt]
dataUsingEncoding:NSUTF8StringEncoding]];
答案 2 :(得分:0)
您过早地将参数格式化为字符串。一旦将其格式化为字符串,就无法轻易修改这些值,也无法添加新参数。
相反,您需要收集这些参数是NSMutableDictionary
,并且只有在您准备发送请求时才将其转换为JSON。
因此创建一个parameters
属性:
@property (nonatomic) NSMutableDictionay *parameters;
并且不要忘记在init
方法中分配它。然后,当发送请求时,使用:
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters
options:0
error:&error];