Я просто хочу спросить, как отправить значение текстового поля в базу данных mysql в xcode, используя obj c без какого-либо действия щелчка или с действием click ?
Если приведенный ниже код может извлекать и отображать данные JSON с веб-сервера в xcode:
#import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize username,email; - (void)viewDidLoad { [super viewDidLoad]; NSError *error; NSString *url_string = [NSString stringWithFormat: @"http://localhost/test.php"]; NSData *data = [NSData dataWithContentsOfURL: [NSURL URLWithString:url_string]]; NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; NSDictionary *dict = [json firstObject]; NSString *data1 = [dict valueForKey:@"username"]; NSString *data2 = [dict valueForKey:@"email"]; email.text = data1; pw.text = data2; } @end
Как отправить имя пользователя, значение электронной почты в базу данных mysql? Это тот же метод, применяемый для почтового метода? Потому что я не хочу использовать классы SBJson (если возможно).
Есть несколько способов сделать это. Во-первых, важно заметить, что dataWithContentsOfURL
не является асинхронным запросом. Это означает, что если вы используете его для передачи больших данных, есть хороший шанс, что вы заморозите приложение. Для запросов async вы должны использовать NSURLRequest.
Сказав это, есть превосходный API для загрузки / загрузки данных асинхронно. Тот, который очень часто используется и хорошо документирован, является AFNetworking . Это кодируется поверх NSURLRequest.
Например, на вашем PHP вы можете получить поля из инструкции POST следующим образом:
<?php $username = $_POST["username"]; $email = $_POST["email"]; ?>
В своем приложении вы можете вызвать PHP-скрипт с запросом POST в AFNetworking следующим образом:
NSString *username = @"username"; NSString *email = @"email"; NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"yourUrl" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { NSLog(@"Sending POST request to server"); [formData appendPartWithFormData:[username dataUsingEncoding:NSUTF8StringEncoding] name:@"username"]; [formData appendPartWithFormData:[email dataUsingEncoding:NSUTF8StringEncoding] name:@"email"]; } error:nil]; AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:^(NSProgress * _Nonnull uploadProgress) { dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@"SERVER UPLOAD FRACTION COMPLETED: %f", uploadProgress.fractionCompleted); }); } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { NSLog(@"responseObject %@", responseObject); NSString *responseString = [[[NSString alloc] initWithData:responseObject encoding:NSASCIIStringEncoding] mutableCopy]; NSLog(@"The respose is: %@", responseString); if(error) { NSLog(@"Error: %@", error); } else { NSLog(@"The response is: %@", responseString); // Do something with the response } }]; [uploadTask resume];
Попробуйте этот код:
NSDictionary *jsondata = @{ @"username":email.text, @"password":pw.text }; NSString *requestString = [jsondata jsonStringWithPrettyPrint:YES]; NSData *postData = [requestString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO]; NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:YOUR_URL_HERE]; [request setHTTPMethod:@"POST"]; [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; [request setValue:@"application/json; charset=UTF-8 " forHTTPHeaderField:@"Content-Type"]; [request setHTTPBody:postData]; NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration]; NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { //Handle your response here }]; [task resume];