0

对于使用 PUT 的 REST Web 服务调用,我需要发送如下所示的 JSON:

{"leader":"John Smith","leader_id":"asldfkj234234324asldkfs234","resource_uri":"/api/event/38001"}

相反,当我序列化 JSON 时,它会插入额外的 '/' 字符,这就是我相信我收到 400 错误的原因:

{"leader":"John Smith","leader_id":"asldfkj234234324asldkfs234","resource_uri":"\/api\/event\/38001"}

这是我正在使用的代码。有任何想法吗?

NSDictionary *myDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                self.clubToEdit.leader, @"leader",
                                self.clubToEdit.leaderID, @"leader_id",
                                @"/api/event/38001", @"resource_uri",
                                nil];

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:myDictionary options:0 error:&error];

if (!jsonData) 
{
    NSAssert(FALSE, @"Unable to serialize JSON from NSDict to NSData"); 
} else {
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

    RKParams *params = [RKRequestSerialization serializationWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding]MIMEType:RKMIMETypeJSON];
    [client put:@"/api/event/?format=json&username=test&api_key=apikey" params:params delegate:self]; 
}
4

1 回答 1

0

首先,您的问题与代码不匹配。在您的问题中,您声明您需要发送"\api\event\38001",而在您的代码中您编写 " /api/event/38001"。由于您的问题仅对第二种情况有意义,因此我认为它是有效的。

现在问题是您的 JSON 序列化程序类转义了斜杠(一些特殊字符需要转义),这就是它在这些字符之前添加反斜杠的原因。

于 2012-09-23T04:48:30.033 回答