我面临一种奇怪的行为。我使用以下代码发送HTTP 使用POST方法请求服务器
[[RKClient sharedClient] post:[NSString stringWithFormat:@"api"]
params:aDict
delegate:self];
保存值的字典如下:
NSDictionary *comment = [NSDictionary dictionaryWithObjects:[NSArray
arrayWithObjects:@"wallcomment", [self.wall
valueForKey:@"wallMessageId"], [self.textView text], nil]
forKeys:
[NSArray arrayWithObjects:@"a01call", @"a01wall_message_id",
@"a01comment", nil]];
当[self.textView text]填充带有重音的法语单词时 服务器收到错误的编码:“Test @vérification caractèresspéciaux“
我不会在发布之前操纵textview文本,因此编码也是UTF8。
当我检查POST标头时,内容类型没有编码类型。我尝试使用以下方法添加它,但它没有添加:
- (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)header
我在文档中没有看到的任何特殊方法或属性?
我正在使用RestKit 0.9.3
答案 0 :(得分:2)
这样做:
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"api" delegate:self block:^(RKObjectLoader *loader) {
[loader setAdditionalHTTPHeaders:[NSDictionary dictionaryWithObjectsAndKeys:@"application/x-www-form-urlencoded;charset=UTF-8", @"Content-Type", nil]];
}];
如果您需要,请不要忘记添加其他标题。
我在浏览RestKit代码时注意到的另外一件事,即RKObjectManager第222行:
loader.method = RKRequestMethodGET;
所以不要惊讶你的方法是GET,而不是POST。如果你真的需要POST(我认为你没有),那么改变块中的方法。