0
ソフトウェアがコンストラクタを使用して初期化し、ソフトウェアのコンソールに結果を表示しているときJSONデータをobjective-Cで送信しているソフトウェアがあります:JSONデータがobjective-Cからmysqlデータベースに挿入されていない
- (id)initWithAPIManager:(id)apiManager
{
_apiManager = apiManager;
NSString *strURL = @"http://mysite/DBTest.php";
NSLog(@"URL:\t%@", strURL);
NSURL *url = [NSURL URLWithString:strURL];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
if (request != nil) {
NSString *jsonData = [NSString stringWithFormat:@"{\"IP\":\"%@\",\"Date\":\"%@\"}",
[self GetIP],
[self GetDate]];
NSData *requestData = [NSData dataWithBytes:[jsonData UTF8String]
length:[jsonData lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:requestData];
NSLog(@"will create connection");
// Send a synchronous request
NSURLResponse * response = nil;
NSError * NSURLRequestError = nil;
//- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSData * __nullable data, NSURLResponse * __nullable response, NSError * __nullable error))
//[NSURLConnection dataTaskWithRequest:]
NSData * responseData = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&NSURLRequestError];
if (responseData != nil) {
NSLog(@"responseData is valid.");
NSString *myString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"myString:\t%@", myString);
} else {
NSLog(@"responseData is nil!");
}
} else { // uh oh
NSLog(@"Error creating the URL request!");
}
//NSLog(@"IP address:\t%@", [self getIP]);
OldIPGettingThingy();
return self;
}
ローカルのJSONファイルを使用すると正しく動作するPHPスクリプトがありますが、php:// inputを使用して切り替えると、var_dumpにNULLと言われ、データベースに何も挿入されません。前もって感謝します。
<?php
$con = new PDO('mysql:host=localhost;dbname=pirates','root','password');
//$raw_data = file_get_contents('php://input');
$raw_data = file_get_contents('tes.json');
$data = json_decode($raw_data, true);
var_dump($data);
$stmt = $con->prepare("INSERT INTO Tracking values(?,?,?)");
foreach ($data as $row){
$stmt->bindParam(1, $row['id']);
$stmt->bindParam(2, $row['IP Address']);
$stmt->bindParam(3, $row['timestamp']);
$stmt->execute();
}
echo "got here";
?>
* *自分でJSONを構築しないでください。 JSONシリアライザを使用して、辞書やその他の複雑なオブジェクトをフィードします。これは、将来あなたが頭痛の多くを保存します。 – jcaron