2015-06-21 4 views
0

Я хочу создать пользователя на внутреннем сервере, мне нужно ввести следующую информацию для регистрации пользователя.не удалось зарегистрировать пользователя, использующего afnetworking

{ 
    "user": { 
    "email": "[email protected]", 
    "password": "secret", 
    "password_confirmation": "secret", 
    "seed_recipes": true     //optional 
    } 

Я написал следующий код для регистрации пользователя:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
    NSDictionary *parameters = @{@"user[email]":email, @"user[password]":password, @"user[password_confirmation]":password}; 
    [manager POST:@"http://domain.com" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@"JSON: %@", responseObject); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", error); 

я получил следующие ошибки. Кто-нибудь знает причину? (текст JSON не начинался с массива или объекта и не позволял фрагментам не задаваться.) UserInfo = 0x7fbe935cb360 {NSDebugDescription = текст JSON не начинался с массива или объекта, а опция разрешала добавлять фрагменты., NSUnderlyingError = 0x7fbe935c54b0 "Ошибка запроса : unauthorized (401) "}

+0

Вы не можете создавать вложенные словари так, как вы делаете это. Ваш словарь, как вы его создаете, имеет ключи с именем «user [email]», «user [password]» и т. Д., Которые недействительны в JSON. – dan

ответ

0

Возможно, ваш сервер не отвечает за формат JSON только в чистом HTML.

Попробуйте добавить:

[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 

Если это не помогает, убедитесь, что ваш сервер отвечает в формате JSON, чтобы POST вы пытаетесь сделать.

1
NSDictionary *users=[[NSDictionary alloc] initWithObjects:@{@"email":email, @"password":password, @"password_confirmation":password}]; 

NSDictionary *parameters = [[NSDictionary alloc] initWithObjects:@{@"user":users}]; 

Попробуйте