您好我是第一次使用restkit,我想到了几个问题。首先使用restkit发送post请求时请求Json或XML的格式是什么,我该如何指定它?我正在向服务器发送一个帖子请求以验证用户身份,如果XML格式的信息正确,我应该收到一个确认。
NSArray *objects = [NSArray arrayWithObjects: email, password, nil];
NSArray *keys = [NSArray arrayWithObjects:@"username", @"password", nil];
NSDictionary *params = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
[[RKClient sharedClient] post:@"/login" params:params delegate:self];
这是我正在使用的代码,Web服务接受的xml应该看起来像
<login>
<username>user@example.com</username>
<password>Password</password>
</login>
它正在发送请求,但我没有得到正确的回复。有没有办法查看我发送给服务器的请求的格式是什么?
答案 0 :(得分:2)
听起来你正在使用错误的电话。您正在使用的帖子假设其他服务需要params,例如login = username&amp; password = skdjgh,即不是XML格式,而是“正常REST格式”。您需要找到使用RestKit发布文本块的调用,或使用其他调用。换句话说,您需要自己创建XML(或使用某些库),然后通过帖子发送。
答案 1 :(得分:2)
试一试。我认为它应该做你想要的。我从来没有工作,但我的代码还有其他问题。
RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:@"http://mysite.com"];
objectManager.serializationMIMEType = RKMIMETypeXML;
注意:这可能是您向您发送XML而不是将XML发送到服务器的操作。不知道我的头脑。
答案 2 :(得分:2)
您可以使用RKRequestSerialization
类为您执行xml序列化。
以下是我的某个项目的代码段:
#import <RestKit/RKRequestSerialization.h>
...
[RKObjectManager sharedManager].acceptMIMEType = RKMIMETypeTextXML;
NSString *loginData = @"<Login><UserId>test</UserId><Password>test</Password></Login>";
[[RKClient sharedClient] setValue:@"XYZ01" forHTTPHeaderField:@"ServiceId"];
[[RKClient sharedClient] post:@"/login"
params:[RKRequestSerialization serializationWithData:[loginDetails dataUsingEncoding:NSUTF8StringEncoding] MIMEType:RKMIMETypeTextXML]
delegate:self];
而且,这是使用RKLogConfigureByName("RestKit/Network", RKLogLevelTrace)
2012-08-12 11:28:41.476 MyApp[730:707] T restkit.network:RKRequest.m:402 Prepared POST URLRequest '<NSMutableURLRequest https://someserver.com/MyApp/rest/service/request>'. HTTP Headers: {
Accept = "text/xml";
"Content-Length" = 75;
"Content-Type" = "text/xml";
ServiceId = XYZ01;
}. HTTP Body: <Login><UserId>test</UserId><Password>test</Password></Login>
答案 3 :(得分:1)
我做了objectManager.serializationMIMEType = RKMIMETypeXML;
但我的请求的Content-Length是0,HTTP Body是空的。如果我使用RKMIMETypeJSON
请求看起来很好,但xml序列化不起作用。任何想法为什么会这样?使用有效的序列化来发布xml还需要做些什么呢?
我也在doc中找到了这个:“RestKit目前支持序列化为RKMIMETypeFormURLEncoded和RKMIMETypeJSON”。那么,我如何使用RKObjectManager发布xml?
答案 4 :(得分:0)
我使用ASIHTTPRequest和XMLWriter解决了这个问题。不幸的是,但RestKit似乎并不支持XML文章。
我确实使用RK来获取内容。