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

dan*_*dan 5 html iphone controls uiwebview

我需要控制一个加载到UIWebView的网站,比如发送帖子数据和使用get请求.在每个请求之后,响应应作为字符串加载到变量中.

这样做的原因是我试图从没有公共网络API并使用基于cookie的用户身份验证的网站获取数据.所以我想登录用户,从该站点获取一些数据并显示结果.

是这样的东西吗?

编辑:我刚遇到方法stringByEvaluatingJavaScriptFromString.使用这种方法用JS控制UIWebView中的内容是否可行?就像提交Web表单并等待页面完成加载并获取响应数据一样?

编辑2:刚刚找到一个可能对ASIHTTPRequest有帮助的框架

Fra*_*ger 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];
Run Code Online (Sandbox Code Playgroud)

如果您想在显示响应之前对其进行处理,那么您将需要执行以下操作:

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"];
Run Code Online (Sandbox Code Playgroud)

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

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
Run Code Online (Sandbox Code Playgroud)