Я просто хочу спросить о том, как отправить значение текстового поля в базу данных MySQL в Xcode, используя obj c без каких-либо действий щелчка или же с действием щелчка?
Если приведенный ниже код может извлекать и отображать данные 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
это не асинхронный запрос. Это означает, что если вы используете его для передачи больших данных, есть большая вероятность, что вы заморозите приложение. Для асинхронных запросов вы должны использовать 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];