0

这就是我发布到 API 的方式:

curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST http://sub.domain.com/api/v1/sections.json -d "{\"section\":{\"properties\":{\"email\":\"example@email.com\",\"department\":\"dpt123\",\"phone_number\":\"55578912\"}}}"

我尝试使用以下代码来完成此操作:

NSString *strurl=@"http://sub.domain.com/api/v1/sections.json";
NSURL *url=[NSURL URLWithString:[strurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSMutableDictionary *dict=[[NSMutableDictionary alloc] init];


[dict setValue:phoneTxt.text forKey:@"phone_number"];
[dict setValue:emailTxt.text forKey:@"email"];
[dict setValue:departmentTxt.text forKey:@"department"];
ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url];


NSDictionary *sectionDic = [NSDictionary dictionaryWithObjectsAndKeys:dict, @"properties", nil];

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:sectionDic, @"section",nil];

SBJsonWriter *jsonWriter = [[SBJsonWriter alloc] init];
NSString *params = [jsonWriter stringWithObject:dic];

NSLog(@"param----%@",params);
[request setPostValue:params forKey:@"properties"];


[request setRequestMethod:@"POST"];
[request setDelegate:self];
[request startAsynchronous];

但我得到的回应如下:

参数:{"section"=>"{\"properties\":{\"department\":\"dpt123\",\"email\":\"example@email.com\",\"phone_number\":\"55578912\"}}"}

它给了我这个错误,因为它具有作为字符串的属性:

NoMethodError (undefined method 'stringify_keys' for #<String:0x000000025dbc98>)

如何使用部分和属性作为键进行 POST。我将衷心感谢您的帮助。

4

1 回答 1

0

您调用了错误的方法来创建字典sectionDicdic. dictionaryWithObjectsAndKeys:期望对象和键都有数组。而是尝试

NSDictionary *sectionDic = @{@"properties": dict};
NSDictionary *dic = @{@"section":sectionDic};
于 2013-09-20T04:29:24.863 回答