Я создал веб-службы PHP, которые читают данные из MySQL и возвращаются в мое приложение для iPhone. Раньше я использовал тот же код во многих приложениях. Веб-сервер, на котором я установил свои веб-службы, основан на CakePHP, а мои веб-службы написаны простым PHP.
Я не получаю данные от них в своем приложении для iPhone. Веб-службы отлично работают на локальном хосте, но, как установлено на сервере, я получаю двоичные данные вместо XML файла. Я изменил тег кодировки и типа контента. Выполнение этих веб-служб, возвращающих следующий код ошибки.
ошибка в анализе msg: Charset из 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);
CakePHP делает много обработки контента, чтобы убедиться, что вам нужно сделать небольшую работу, насколько это возможно. Если вы просто пытаетесь получить доступ к некоторым простым данным, вы можете просто оставить его вне CakePHP и сохранить их как отдельные скрипты. Создание их в CakePHP может использовать кувалду для подвешивания рамки изображения (если вы получите мою аналогию).
Учитывая ваше объяснение в комментариях, я бы рекомендовал импортировать их в CakePHP в качестве библиотек. Вы могли бы взять ваш код webservice как набор файлов PHP (или, тем не менее, вы их организовали), и их можно перенести в соответствующую папку в каталоге app/, в зависимости от используемой версии Cake. Оттуда они могут быть включены в остальную часть CakePHP без необходимости знать, что ваш клиент делает с его кодом.
Прочитайте здесь, как будет импортироваться ваш код. Имейте в виду, что в этом процессе произошли значительные изменения между версиями 1.2 и 1.3, поэтому обратите внимание, что в приведенном ниже примере:
Надеюсь, это поможет!