Отправка JSON через POST в NSURLREQUEST

У меня проблема с отправкой JSON на сервер с API отдыха. Это код, который я использую:

NSString *jsonPostBody = [NSString stringWithFormat:@"'json' = '{\"user\":{\"username\":"
                          "\"%@\""
                          ",\"password\":"
                          "\"%@\""
                          "}}'",
                          [username stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
                          [password stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];       
NSData *postData = [jsonPostBody dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *apiPathParams = [NSString stringWithFormat:@"%@",
                           @"getUser"
                           ];

NSURL *url = [NSURL URLWithString:[[apiPath retain] stringByAppendingString:apiPathParams]];    
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url
                                                       cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                                   timeoutInterval:180.0];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:postData];
NSString* postDataLengthString = [[NSString alloc] initWithFormat:@"%d", [postData length]];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:postDataLengthString forHTTPHeaderField:@"Content-Length"];
[self internalRequest:request];

Это то, такое выглядит API, если бы это была форма HTML:

<form method="post" action="someAPI-URL">
<input name="json" value="{"user":...}" />
</form>

Это то, что мои данные будут выглядеть так, когда я добавляю его в запрос:

json={"user":{"username":"someUser","password":"somePassword"}}

для Причина, по которой я не знаю, что данные Post не приходят на сервер. Я сделал что-то не так с форматированием Datastring? Насколько именно я должен отформатировать мой Datastring так, чтобы он соответствовал строке форму, как показано выше, доставит на сервер?

Любая помощь была бы высоко ценится.

P.S. Я бы предпочел не использовать ASIHTTTREQUESEST, поскольку я взял на себя проект от кого-то другого, все остальные запросы отлично работает, кроме этого пост-запроса. Таким образом, изменение этой всей массы в другую структуру подключения было бы очень много времени.

Вот метод метода интернатора

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:req delegate:self];
NSMutableDictionary *di = [NSMutableDictionary dictionaryWithObject:[[NSMutableData alloc] init] forKey:@"receivedData"];   
[di setObject:[NSString stringWithFormat:@"%i",identifier] forKey:@"identifier"];
if (delegate == nil) 
{ 
    delegate = self;         
}
[di setObject:delegate forKey:@"delegate"];

CFDictionaryAddValue(connectionToInfoMapping, connection, di)
10
задан Maverick1st 13 September 2011 в 15:42
поделиться