Как сделать ответ Php на Objective-C (iPhone)? - PullRequest
1 голос
/ 21 июля 2011

Моя проблема в том, что я не знаю, как отправить данные, которые я нахожу (с помощью Выбрать из где) в PHP, в Objective-C. Я знаю, что мне нужно сделать набор данных, но как мне это сделать? Некоторые люди говорят, что я должен использовать JSON, но я не могу найти никакого решения. Действительно, я не знаю, как сделать ответ в PHP? Кто-нибудь может мне помочь?

Это мой код PHP:

$con = mysql_connect("url","username","password");

if (!$con){die('Could not connect: ' . mysql_error());}
    mysql_select_db("Appiness", $con);

$bilgi= mysql_query("SELECT c_id FROM country WHERE c_name='$country'");

while($sutun= mysql_fetch_array($bilgi))
{
    echo $sutun["c_id"];
}

mysql_close($con);

Это мой код Objective-C:

NSURL *url = [NSURL URLWithString:@"someurl"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

[request setPostValue:year1 forKey:@"year"];
[request setPostValue:appy_level forKey:@"appy_level"];
[request setPostValue:reasons forKey:@"reasons"];
[request setPostValue:country forKey:@"country"];
[request setPostValue:city forKey:@"city"];
[request setPostValue:sex forKey:@"sex"];
[request setRequestMethod:@"POST"];
[request setValidatesSecureCertificate:NO];
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestDone:)];
[request startAsynchronous];

- (void)requestDone:(ASIHTTPRequest *)request
{
    NSString *response = [request responseString];
    NSLog(@"%@",response);
}

- (void)requestFailed:(ASIHTTPRequest *)request
{    

    NSError *error = [request error];
    NSLog(@"%@",[error localizedDescription]);
}

1 Ответ

1 голос
/ 21 июля 2011

Если вы знаете, что разбираете xml, вы можете ответить xml следующим образом, используя php-код.

<?php
    include_once('config.php');
    header("Content-Type: text/xml");
    $error_respond ='<?xml version="1.0" encoding="utf-8"?><result>failure</result>';
    if($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        $return_val='<?xml version="1.0" encoding="utf-8"?>';
        $id = $_POST['userid'];
        $return_val=$return_val.'<UserDetails>';

        $selusersql ="select * from users where userid = ".$id;
        $selusertrs  = mysql_query($selusersql);
        $selusernum = mysql_num_rows($selusertrs);
        while($userrow = mysql_fetch_array($selusertrs))
        {
            $return_val=$return_val.'<UserID>'.$userrow['User_ID'].'</UserID>';
            $return_val=$return_val.'<UserName>'.$userrow['User_Name'].'</UserName>';
            $return_val=$return_val.'<Email>'.xmlentities($userrow['User_Email']).'</Email>';
        }
        $return_val=$return_val.'</UserDetails>';
        echo $return_val;
    }
    else
    {
        echo $error_respond;
        exit;
    }
?>

Пример вывода приведенного выше кода будет (при условии, что идентификатор пользователя опубликован 1, а данные сохранены в БД следующим образом)

<?xml version="1.0" encoding="utf-8"?>
<UserDetails>
<UserID>1</UserID>
<UserName>DummyUser</UserName>
<Email>Dummy@Dummy.com</Email>
</UserDetails>

, если произошла ошибка, если кто-то пытался вызвать ваш URL-адрес напрямую из браузера, т. Е. Метод запроса не POST, поэтому мы вернемся после ответа с ошибкой.(Я считаю, что сообщение лучше, чем получить).

<?xml version="1.0" encoding="utf-8"?>
<result>failure</result>

Теперь последняя важная часть - вы должны проанализировать этот ответ в соответствии с вашими требованиями.Ищите вокруг, и вы получите демо-версию xmlparsing, например, как выполнить анализ xml в iphone.

...