Xcode使用参数调用Web PHP文件?

时间:2013-06-21 06:56:10

标签: objective-c mknetworkkit

我一直在研究我的ios应用程序。我需要在我的网站上调用一个php文件然后获取信息。我一直在使用本教程,但现在已经过时且不受支持。

http://www.raywenderlich.com/2965/how-to-write-an-ios-app-that-uses-a-web-service

我一直在关注MKNetworkKit,我认为这是我需要使用但我不确定如何实现它。

2 个答案:

答案 0 :(得分:1)

我认为大多数人都认为AFNetworking是最适合这种情况的图书馆。关于如何使用它甚至还有一个非常好的raywenderlich.com tutorial

例如,我以这种方式使用它来获取带参数(makemyday.com/web/export.php?id=345)的链接内容到UIWebView

- (IBAction)searchForNearbyButtonPressed:(id)sender {
    NSURL *baseURL = [NSURL URLWithString:@"http://makemyday.com"];
    NSDictionary *parameters = @{@"id": @"345"};
    AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:baseURL];
    [client registerHTTPOperationClass:[AFHTTPRequestOperation class]];
    [client getPath:@"/web/export.php"
         parameters:parameters
            success:^(AFHTTPRequestOperation *operation, id responseObject) {
                NSLog(@"response=%@", [operation.response allHeaderFields]);
                [self.webView loadData:responseObject  MIMEType:operation.response.MIMEType textEncodingName:operation.response.textEncodingName baseURL:operation.response.URL];
            }
            failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                NSLog(@"error=%@", error.description);
            }
     ];

}

答案 1 :(得分:0)

输入“NSURLConnection”进入帮助。那里有一些很好的例子。

最简单的方法是使用NSURLConnection进行同步调用。

在您的服务器响应并关闭之前,这是一个阻止呼叫。

    NSURL *url = [NSURL URLWithString:@"http://makemyday.com"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSError *error;
    NSURLResponse *response;
    NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

更好的用户体验方法是使用委托进行异步操作。我发现以下内容令人满意,因为无论如何都可以增加5,10,20,60秒的时间。

NSURLRequest *theRequest = [NSURLRequest requestWithURL: url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:**20.0**];

NSURLDownload  *theDownload = [[NSURLDownload alloc] initWithRequest:theRequest delegate:**self**]; // NOTE THE SELF FOR THE CALLBACks

if (!theDownload) {
   //OOPS
}

使用以下回调方法进行失败,成功/完成和文件名

- (void)download:(NSURLDownload *)download decideDestinationWithSuggestedFilename:(NSString *)filename;
- (void)download:(NSURLDownload *)download didFailWithError:(NSError *)error
- (void)downloadDidFinish:(NSURLDownload *)download;
- (void)download:(NSURLDownload *)download didCreateDestination:(NSString *)path