NSString *reqURL = [NSString stringWithFormat:@"%@/login",SERVER_URL];
NSMutableURLRequest *req = [[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:reqURL]];
[req setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
NSData *myRequestData = [NSData dataWithBytes:[@"username=whatever&password=whatever" UTF8String] length: [@"username=whatever&password=whatever" length]];
[req setHTTPMethod: @"POST"];
[req setHTTPBody: myRequestData];
NSData *returnData = [NSURLConnection sendSynchronousRequest:req returningResponse: nil error: nil];
NSString *html = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
我从另一个问题中得到了这个代码。但是如果有多个提交按钮会发生什么。我真的不知道怎么问这个问题。此类情况的一个示例是在此站点的注销页面上。没有字段可以输入数据,但有2个提交按钮。
如何使用上面的代码在其中一个按钮上“模拟点击”(所以不使用UIWebView)
答案 0 :(得分:0)
这些表单通常告诉按下哪个按钮的方式是命名按钮并检查值。简单地说,接收表单数据的基本页面将通过检查是否($ _POST ['submit'] ==“Send!”)来检查表单是否已提交,该表单通过按下按钮告诉用户用户到达该页面。决定按下什么按钮时使用相同的概念。
if($ _POST [“submit”] ==“Send!”)addDataToDB();
否则if($ _POST [“submit”] ==“Update!”)updateUser();
否则if($ _POST [“submit”] ==“删除我!”)removeUser();
所以现在,您需要做的是检查带有表单的html页面的来源,并找出您要模拟的提交按钮的名称和值,并将该数据添加到您的请求中的POST正文数据
更新:哎呀!误解了你的问题,认为你的意思是在一个页面上有一个表单中的多个提交按钮,但现在我认为你的意思是一个表单转到另一个“确认”表单...在你的didRecieveData委托方法中你将需要存储你得到的所有html并且在你的didFinishLoading委托方法中,你需要提取任何隐藏的字段名称&值,然后创建一个新请求,将它们作为POST数据,并将url作为表单的“action”url