2010-01-14 26 views
5

Tôi cần kiểm soát trang web được tải vào UIWebView như gửi dữ liệu bài đăng và sử dụng yêu cầu nhận. Sau mỗi yêu cầu, phản hồi sẽ được tải dưới dạng chuỗi thành một biến.iPhone SDK: kiểm soát trang web trong UIWebView theo lập trình

Lý do cho điều này là tôi đang cố tìm nạp dữ liệu từ trang web không có api web công khai và sử dụng xác thực người dùng dựa trên cookie. Vì vậy, tôi muốn đăng nhập người dùng, tìm nạp một số dữ liệu từ trang web đó và trình bày kết quả.

Có phải điều gì đó như thế này không?

EDIT: Tôi vừa xem phương thức stringByEvaluatingJavaScriptFromString. Có thể sử dụng phương pháp này để kiểm soát nội dung trong UIWebView với JS không? Giống như gửi biểu mẫu web và đợi trang hoàn tất tải và nhận dữ liệu phản hồi?

EDIT 2: Chỉ cần thấy một khuôn khổ có thể hữu ích ASIHTTPRequest

Trả lời

2

Chắc chắn nó có thể. Chỉ cần tự mình thực hiện mã mạng và sau đó đổ kết quả HTMLWeb bên trong của giao diện người dùng.

// 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]; 

Nếu bạn muốn xử lý các phản ứng trước khi hiển thị nó, sau đó bạn sẽ muốn làm điều gì đó dọc theo dòng:

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"]; 

Cũng nên nhớ rằng bạn có thể sử dụng JavaScript để kiểm soát trình duyệt :

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

Cảm ơn bạn đã trả lời nhanh. NSMutableURLRequest có chăm sóc các cookie web auth không? Hay nó sẽ gửi yêu cầu - như lửa và quên? – dan

+1

Tôi không biết phải trung thực. Tôi đã sử dụng MonoTouch trong 6 tháng qua. Apple có tài liệu tốt; nếu không, hãy mở một câu hỏi SO mới. –

Các vấn đề liên quan