我浏览过该网站,我发现了这个问题的一些变化,但我无法理解。我正在尝试通过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>
任何帮助将不胜感激。提前致谢。第一次海报所以如果我错过了什么请告诉我。
此致
答案 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,它就像一个魅力。
希望这有助于某人。