Login iPhone RestKit上的登录问题

Login iPhone RestKit上的登录问题,login,restful-authentication,restkit,Login,Restful Authentication,Restkit,我很难理解这个问题: 我正在使用Restkit for iPhone sdk 5.0,并在类会话中进行登录 NSString* url=[[[RKClient sharedClient]baseURL]stringByAppendingString:@"/users/sign_in"] ; RKRequest *request = [RKRequest requestWithURL:[NSURL URLWithString:url] delegate:delegato]; r

我很难理解这个问题: 我正在使用Restkit for iPhone sdk 5.0,并在类会话中进行登录

NSString* url=[[[RKClient sharedClient]baseURL]stringByAppendingString:@"/users/sign_in"] ;

    RKRequest *request = [RKRequest requestWithURL:[NSURL URLWithString:url] delegate:delegato];

    request.queue = [RKClient sharedClient].requestQueue;
    request.authenticationType = RKRequestAuthenticationTypeHTTP;

    request.username = utente.email;
    request.password = utente.password;
    [request send];
delegato是我的主类,我在其中调用了login方法

然后我实现了请求:DidLoadResponse,其中a写了以下几行:

if ([response isSuccessful])

    RKLogDebug(@"Login effettuato con successo %d", response.statusCode );
这总是返回200,因为状态代码总是使用正确的电子邮件和密码进行尝试,但是当我从myWebServer/recent.json收到最近的问题时,我有一个空的响应,我也尝试使用对象加载器,这与我未连接时的响应相同

日志系统向我打印了以下字符串:

2011-12-06 11:58:20.480 APP[4364:fb03]D restkit.network:RKRequest.m:362向URL mysite/recent.json发送异步GET请求。 2011-12-06 11:58:20.484 APP[4364:fb03]T restkit.network:RKRequest.m:310准备好获取URLRequest。HTTP标头:{ 内容长度=0; }.HTTP正文:。 2011-12-06 11:58:20.486应用程序[4364:fb03]D restkit.network.queue:RKRequestQueue.m:272已从队列发送请求。装载计数=5个中的2个 2011-12-06 11:58:20.487应用程序[4364:fb03]D restkit.network.queue:RKRequestQueue.m:443收到请求响应,正在从队列中删除。现在加载第1个,共5个 2011-12-06 11:58:20.622应用程序[4364:fb03]D restkit.网络:RKResponse.m:196 NSHTTPURLRResponse状态代码:406 2011-12-06 11:58:20.623应用程序[4364:fb03]D restkit.网络:RKResponse.m:197头文件:{ 年龄=0; 缓存控制=无缓存; 连接=保持活动状态; 内容长度=1; 内容类型=应用程序/json;字符集=utf-8; 日期=2011年12月6日星期二10:58:20 GMT; 服务器=nginx/0.7.67; 过孔=1.1清漆; X-Runtime=0.006494; X-Ua-Compatible=IE=Edge,chrome=1; X-清漆=1786715586; } 2011-12-06 11:58:20.623 APP[4364:fb03]T restkit.网络:RKResponse.m:202读取响应主体: 2011-12-06 11:58:20.624应用程序[4364:fb03]I restkit.网络:RKRequest.m:562状态代码:406 2011-12-06 11:58:20.624应用程序[4364:fb03]I restkit.网络:RKRequest.m:563正文: 2011-12-06 11:58:20.625附录[4364:fb03]第406号密码第406段中的错误验证 2011-12-06 11:58:20.625应用程序[4364:fb03]D restkit.network.queue:RKRequestQueue.m:443收到请求响应,正在从队列中删除。现在正在加载0/5

这是什么意思

非常感谢你的帮助

json是:

{
"_id":"4ede406d5040dc0001000009",
"answers_count":2,
"cache_slugs":[
{"_id":"4ede406d5040dc000100000a","slug":"faccio-prova-di-domanda"},
{"_id":"4ede41d8bf3a9e0001000008","slug":"faccio-prova-di-domanda"},
{"_id":"4ee61fd7f24ee9000100008b","slug":"faccio-prova-di-domanda"}],
"created_at":"2011-12-06T16:18:53+00:00",
"detail":"",
"followed_by_user_ids":["4eca5fa1166f360001000014","4eca5fa1166f360001000014","4dd43ff93c40760001000004"],
"slug":"faccio-prova-di-domanda",
"text":"faccio prova di domanda",
"topic_ids":[],
"updated_at":"2011-12-12T15:37:58+00:00",
"user_id":"4eca5fa1166f360001000014"}
我的映射是这样的:

RKObjectMapping* questMapping = [RKObjectMapping mappingForClass:[Question class]];
    questMapping.setDefaultValueForMissingAttributes=YES;
    [questMapping mapKeyPath:@"_id" toAttribute:@"idDomanda"];
    [questMapping mapKeyPath:@"text" toAttribute:@"titoloDomanda"];
    [questMapping mapKeyPath:@"detail" toAttribute:@"dettaglioDomanda"];
    //[questMapping mapKeyPath:@"user_id" toRelationship:@"identificativo" withMapping:userMapping];

    [questMapping mapKeyPath:@"created_at" toAttribute:@"dataCreazione"];
    [questMapping mapKeyPath:@"updated_at" toAttribute:@"aggiornataAlle"];

    [questMapping mapKeyPath:@"answers_count" toAttribute:@"numeroRisposte"];
    [questMapping mapKeyPath:@"topic_ids" toAttribute:@"topics"];
    [questMapping mapKeyPath:@"followed_by_user_ids" toAttribute:@"followers"];


    [objectManager.mappingProvider addObjectMapping:questMapping];

    [[RKObjectManager sharedManager].mappingProvider setSerializationMapping:questMapping forClass:[Question class]]; 
我的登录密码是:

[[RKClient sharedClient] setUsername:self.email];
    [[RKClient sharedClient] setUsername:self.password];

    [RKObjectManager sharedManager].client=[RKClient sharedClient];
    RKParams *params = [RKParams params];

    [params setValue:self.email forParam:@"username"];
    [params setValue:self.password forParam:@"password"];

    [[RKClient sharedClient] setAuthenticationType:RKRequestAuthenticationTypeHTTP];
    [[RKClient sharedClient] post:@"/users/sign_in" params:params delegate:delegato];

是否正确?

您需要使用[[RKObjectManager sharedManager].mappingProvider addObjectMapping:mapping]定义映射;更多详细信息请参阅,并在没有KVC部分的情况下查找映射

对不起,伙计们,我执行GET请求时出错,我不得不发布它。但是我不能登录。我应该使用什么:RKRequest、RKClient或RKObjectLoader?如果您想从restkit提供的对象映射功能中获益,应该使用[[RKObjectManager sharedManager]loadObjectsAtResourcePath:问题不仅在于如何做,而且在于如何做,因为实际上我做不到!我做了登录,我检查响应是否成功,但是当我使用objectloader尝试loda/blablabla.json时,它不起作用,它给我带来了错误404。我如何解决这个问题?我需要查看您的代码。如果您得到404,那么URL是正确的g、 很显然,除了登录过程之外,一切都很好!我使用objetManager post方法做得很好,但显然服务器返回给我的JSON没有RootkeyPath,因此它告诉我他找不到其他键“”的映射。我必须修改服务器发送给我的JSON!…对吗?我做了,但它似乎不起作用。我f我在我工作的浏览器上执行相同的步骤,调用/recent.json给了我所有最近的问题。加上对该请求的响应继续给我200状态代码!请发布您的json、映射和用于检索记录的代码。