Я создал веб-сервисы 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);