iOS SDK中的HTTP POST隐藏输入类型

时间:2014-02-16 23:10:47

标签: ios http post ios7

我浏览过该网站,我发现了这个问题的一些变化,但我无法理解。我正在尝试通过POST发送我正在构建的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>

以上是如何设置web服务的使用方法。但是,我能够发送我的XML,但我尝试发送的Web服务一直说不存在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];

来自webservice的响应的控制台错误如下。

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

任何帮助将不胜感激。提前致谢。第一次海报所以如果我错过了什么请告诉我。

此致

1 个答案:

答案 0 :(得分: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-form-urlencoded,它就像一个魅力。

希望这有助于某人。