запрос iphone Json POST к серверу Django создает QueryDict в QueryDict

Я создаю запрос POST JSON из Objective C, пользующегося библиотекой JSON как так:

NSMutableURLRequest *request;
request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/%@/", host, action]]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json-rpc" forHTTPHeaderField:@"Content-Type"];
NSMutableDictionary *requestDictionary = [[NSMutableDictionary alloc] init];
[requestDictionary setObject:[NSString stringWithString:@"12"] forKey:@"foo"];
[requestDictionary setObject:[NSString stringWithString@"*"] forKey:@"bar"];

NSString *theBodyString = requestDictionary.JSONRepresentation;
NSData *theBodyData = [theBodyString dataUsingEncoding:NSUTF8StringEncoding];   
[request setHTTPBody:theBodyData];  
[[NSURLConnection alloc] initWithRequest:request delegate:self];

Когда я считал этот запрос в своем представлении Django, отладчик показывает, что это взяло всю строку JSON и сделало это первым ключом POST QueryDict:

POST    QueryDict: QueryDict: {u'{"foo":"12","bar":"*"}': [u'']}>   Error   Could not resolve variable

Я могу считать первый ключ и затем повторно проанализировать использование JSON как взлом. Но почему строка JSON не отправляет правильно?

6
задан MikeN 5 April 2010 в 15:36
поделиться

1 ответ

Мой жестокий прием для решения моей проблемы:

hack_json_value = request.POST.keys()[0]
hack_query_dict = json.loads(hack_json_value)
foo = hack_query_dict['foo']
bar = hack_query_dict['bar']

Это позволит мне извлечь два значения JSON с дополнительным шагом на стороне сервера. Но он должен работать с одним шагом.

0
ответ дан 17 December 2019 в 07:02
поделиться