У меня проблема с отправкой 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)