Как получить данные из веб-сервисов PHP, установленных в CakePHP, с iPhone? - PullRequest
0 голосов
/ 09 июля 2010

Я создал веб-сервисы PHP, которые считывают данные из MySQL и возвращаются в приложение для iPhone. Ранее я успешно использовал один и тот же код во многих приложениях. Веб-сервер, на котором я установил свои веб-сервисы, основан на CakePHP, а мои веб-сервисы написаны на простом PHP.

Мне не удается получить данные от них в моем приложении для iPhone. Веб-сервисы отлично работают на локальном хосте, но, установив их на сервере, я получаю двоичные данные вместо XML-файла. Я изменил кодировку и тег типа контента. При этом веб-сервисы возвращают следующий код ошибки.

ошибка при разборе сообщения: кодировка из HTTP Content-Type "US-ASCII"; не соответствует кодировке из декларации XML 'utf-8'

Так кто-нибудь может мне помочь? Нужно ли было переписывать все мои веб-сервисы в CakePHP или простые веб-сервисы PHP могут работать? Вот код одного из моих веб-сервисов.

<?php
include('vp-config.php');
// Pull in the NuSOAP code
require_once('lib/nusoap.php');

define("PATH_DIR",str_replace("\\","/",dirname(__FILE__))."/");

$server = new soap_server;

$server->register('getAllNews');
function getAllNews($page) {

$conn = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
mysql_select_db(DB_NAME, $conn) or die(mysql_error());

 $q = "SELECT 
`website_contents`.`id`,
`website_contents` .`website_top_category_id`,
`website_contents` .`created`,
`website_contents` .`short_description`
FROM `website_contents` 
WHERE `website_contents`.`website_content_type_id` = 2 
 AND `website_contents` .`short_description` IS NOT NULL
ORDER BY id DESC LIMIT " . $page ." , 30";
$rs = mysql_query($q);

while($r = mysql_fetch_array($rs)){
       $items[] = array('id'=>$r['id'],                         
      'website_top_category_id'=>$r['website_top_category_id'],
      'created'=>$r['created'],
      'short_description'=>$r['short_description']
      );   
     }  
return $items;

}
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$serve

r->service($HTTP_RAW_POST_DATA);

1 Ответ

0 голосов
/ 09 июля 2010

CakePHP выполняет большую часть работы с контентом, чтобы вам было необходимо выполнять как можно меньше работы. Если вы просто пытаетесь получить доступ к некоторым простым данным, вы можете просто оставить их вне CakePHP и оставить их в виде отдельных скриптов. Для их создания в CakePHP можно использовать кувалду для подвешивания рамки для фотографий (если вы понимаете мою аналогию).

Учитывая ваше объяснение в комментариях, я бы рекомендовал импортировать их в CakePHP в качестве библиотек. Вы сможете взять свой код веб-сервиса в виде набора файлов PHP (или как бы вы их ни организовали), и они могут быть помещены в соответствующую папку в каталоге app / в соответствии с используемой версией Cake. Оттуда они могут быть включены в остальную часть CakePHP без необходимости знать, что на самом деле делает ваш клиент с его кодом.

Читайте здесь о том, как ваш код будет импортирован. Имейте в виду, что значительные изменения были внесены в этот процесс между версиями 1.2 и 1.3, поэтому обратите внимание, что в вашем чтении ниже:

Надеюсь, это поможет!

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