2014-02-16 2 views
1

Я осмотрел сайт, и я нашел несколько вариантов этого вопроса, но я не могу понять его. Я пытаюсь отправить через POST значение скрытого ввода с моим приложением iOS, которое я создаю.HTTP POST Скрытый тип ввода в SDK для iOS

Пример HTML POST Я пытаюсь воспроизвести в iOS.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<title>Testing</title> 
<body> 
<form NAME="formName" METHOD="post" 
ACTION="https://samplewebservice.com"> 
<input type=hidden name="transactionMode" value="SendValues" > 
<b>XML Message body:</b> 
<TEXTAREA class="xmlbox" name="Request" COLS=100 ROWS=10 > 
XML Request being sent. 
</TEXTAREA> 
<br> 
<input TYPE=submit class=input VALUE="Send Request"> 
</form> 
</body> 
</html> 

Выше описано, как настроить веб-сервис. Однако я могу отправить свой XML, но веб-служба, которую я пытаюсь отправить, продолжает говорить о том, что параметр Request отсутствует. Ниже вы найдете мой код Obj-C, который я сделал, чтобы решить эту проблему.

NSString *_xmlDoc = [[NSString alloc] initWithFormat:@"%@=%@&%@=%@", @"transactionMode", @"SendValues", @"Request", @"XML Request being sent. "]; 

    NSString *postLength = [NSString stringWithFormat:@"%d", [_xmlDoc length]]; 
    NSData *postData = [_xmlDoc dataUsingEncoding:NSUTF8StringEncoding]; 

    NSURL *serviceUrl = [NSURL URLWithString:@"https://samplewebservice.com"]; 
    NSMutableURLRequest *serviceRequest=[NSMutableURLRequest requestWithURL:serviceUrl cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60]; 
    [serviceRequest setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
    [serviceRequest setValue:@"text/xml" forHTTPHeaderField:@"Content-Type"]; 
    [serviceRequest setHTTPMethod:@"POST"]; 
    [serviceRequest setHTTPBody:postData]; 

Ошибка в консоли из ответа веб-службы следующая.

<description>Mandatory request parameter is missing: Request</description> 

Любая помощь будет принята с благодарностью. Заранее спасибо. Первый плакат, поэтому, пожалуйста, дайте мне знать, если я что-то пропустил.

С уважением,

ответ

0

Я узнал, что была моя ошибка. Казалось бы, мне не хватает нескольких HTTP-заголовков. Пожалуйста, найдите мой ответ ниже.

NSURL *serviceUrl = [NSURL URLWithString:@"https://somewebservice.com"]; 
NSMutableURLRequest *serviceRequest=[NSMutableURLRequest requestWithURL:serviceUrl cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60]; 
[serviceRequest setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[serviceRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[serviceRequest setValue:@"application/xml" forHTTPHeaderField:@"Accept"]; 
[serviceRequest setHTTPMethod:@"POST"]; 
[serviceRequest setHTTPBody:postData]; 

Я добавил spplcation/X-WWW-форм-urlencoded, и она работала как шарм.

Надеюсь, что это помогает кому-то.

Смежные вопросы