将AFHTTPRequestOperation的响应传递给UIWebview

时间:2012-07-26 18:53:24

标签: objective-c xcode uiwebview afnetworking

我的代码向服务器发出两个请求。一个进入uiwebview,一个进入AFHTTPRequestOperation。我想使用AFHTTPRequestOperation并将响应传递给我的uiwebview。将响应传递到uiwebview而不是再次加载它的正确语法是什么?如果不从服务器调用两次,我该怎么做?我仍然希望能够测试加载请求的成功或失败,并发送用户名和密码以连接到网址。

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[itemField resignFirstResponder];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *userName = [defaults objectForKey:@"storedUserName"];
NSString *passWord = [defaults objectForKey:@"storedPassWord"];

NSURL *url = [NSURL URLWithString:@"http://www.example.net/"];
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL: url];

[client setAuthorizationHeaderWithUsername:userName password:passWord];

NSMutableURLRequest *request = [client requestWithMethod:@"GET" path:[@"/example/itemlookup.php?item=" stringByAppendingString:itemField.text] parameters:nil];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

    //calling again here was the only way I could figure out to get this into my webview
    //need to get response from above and put into the uiwebview
    [webView loadRequest:request];
    NSLog(@"Success");
} failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Failure"); 
}];

NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperation:operation];


return YES; 
}

1 个答案:

答案 0 :(得分:1)

我建议使用AFNetworking的UIWebView类别,它正是这样做的;使用AFHTTPRequestOperation加载网页内容,然后将其作为HTML字符串加载到Web视图中。

否则我建议您查看该类别,看看您是否可以调整其代码供您使用。 https://github.com/AFNetworking/AFNetworking/blob/master/UIKit%2BAFNetworking/UIWebView%2BAFNetworking.m