iPhone - PHP Post Request - PullRequest
       3

iPhone - PHP Post Request

1 голос
/ 26 января 2012

Это мой первый вопрос, и я надеюсь получить некоторую помощь:

Я использовал несколько методов (и пробовал с разными механизмами передачи http), чтобы выполнить действие post для сценария php в localhost безхорошие результаты.Я не знаю, что еще искать.Я застрял с этим по крайней мере 6 или 7 часов и, наконец, получил это:

Код цели C:

if (name != nil && message != nil) {
        NSMutableString *postString = [NSMutableString stringWithString:TFPostURL];

        [postString appendString:[NSString stringWithFormat:@"%@=%@",TFName,name]];

        [postString appendString:[NSString stringWithFormat:@"%@=%@",TFMessage,message]];

        [postString setString:[postString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:postString]];

        [request setHTTPMethod:@"POST"];

        postConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];


    }

TFPostURL, TFName, TFMessage, имя и сообщение являются константамиопределено мной.

Я использую базу данных просто для проверки успешности передачи:

PHP Script

<?php

$username = "root";
$database = "db";

mysql_connect(localhost, $username);

@mysql_select_db($database) or die("Unable to find database");

$name = $_POST["name"];

$message = $_POST["message"];

$query = "INSERT INTO test VALUES ('', '$name', '$message')";

mysql_query($query) or die(mysql_error("error"));

mysql_close();

?>

Любые идеи о том, что будетне так?

Я всегда пробовал в localhost, все еще нужно попробовать это на другом Mac.Я собираюсь загрузить свой php-файл в общественное достояние и проверить, не находится ли он у меня на компьютере.


Редактировать :

I 'мы изменили действие PHP POST на GET, получив потрясающие результаты;ТЕПЕРЬ ЭТО РАБОТАЕТ!

<?php

$username = "root";
$database = "db";

mysql_connect(localhost, $username);

@mysql_select_db($database) or die("Unable to find database");

$name = $_GET["name"];

$message = $_GET["message"];

$query = "INSERT INTO test VALUES ('', '$name', '$message')";

mysql_query($query) or die(mysql_error("error"));

mysql_close();

?>

1 Ответ

3 голосов
/ 26 января 2012

Я рекомендую использовать библиотеки ASIHTTP . Они превосходны. Вот пример кода:

ASIHTTPRequest* req = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"localhost"]] autorelease];
[req setCompletionBlock:^{  
   NSLog(@"It works! Response was %@",[req responseString]);
 }];
[req startAsynchronous];

Это делает асинхронные ответы несложными и позволяет использовать замыкания как босс.

Я некоторое время пытался разобраться со встроенными методами NSURLRequest и настоятельно предпочел простоту возможности делать асинхронные запросы без создания отдельного делегата и методов для его обработки. Он также поддерживает POSTing данных и файлов, а также некоторые другие приемы, которые я еще не использовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...