iPhone SDK:通过编程方式控制UIWebView中的网站

5
我需要控制一个加载到UIWebView中的网站,例如发送post数据和使用get请求。每个请求后,响应应该被加载为一个字符串变量。
原因是我正在尝试从一个没有公共Web API并使用基于cookie的用户身份验证的网站获取数据。所以我想登录用户,从该站点获取一些数据并呈现结果。
这样的东西可能吗?
编辑:我刚刚遇到了方法stringByEvaluatingJavaScriptFromString。是否可以使用此方法使用JS控制UIWebView中的内容?像提交Web表单并等待页面完成加载并获取响应数据?
编辑2:刚刚发现一个可能有用的框架ASIHTTPRequest
1个回答

2
当然可以。只需要自己编写网络代码,然后将生成的HTML转到UIWebView中即可。
// Do your POST
NSURL *url = [NSURL URLWithString:"http://stackoverflow.com"];
NSString *body = @"laadeedaa";

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod: @"POST"];
[request setHTTPBody: [body dataUsingEncoding:NSUTF8StringEncoding]];

// Dump the response to the UIWebView
[webView loadRequest:request];

如果您想在显示响应之前处理它,那么您需要按照以下步骤进行操作:
NSURLResponse *response = nil;
NSError *error = nil;
NSData *respData = [NSURLConnection sendSynchronousRequest:request 
                                         returningResponse:&response 
                                                     error:&error];
NSString *respString = [[[NSString alloc] initWithData:respData 
                                              encoding:NSUTF8StringEncoding] autorelease];

NSString *htmlString = [self doSomethingWith:respString];

[webView loadHTMLString:htmlString baseURL:@"http://stackoverflow.com"];

请记住,您可以使用JavaScript来控制浏览器:

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script

感谢您的快速回复。NSMutableURLRequest会处理授权Web Cookies吗?还是它只会发送请求 - 就像“发射并忘记”一样? - dan
1
老实说,我也不知道。我过去6个月一直在使用MonoTouch。苹果文档很好;否则,请在Stack Overflow上开一个新的问题。 - Frank Krueger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接