Здравствуйте, emission-framework, Вы писали:
EF>Всем доброе время суток.
EF>Вопрос довольно актуален — как достучаться к SOAP веб-службе (например WCF) с мобильного клиента?
EF>Тот, кто писал под iPhone, знает, что проблема не простая. На JaveME — тем более. На других платформах типа Bada — не знаю. Android — не особо полезная вещь (там есть Apache Axis), но может пригодиться.
EF>Лично мне пришлось написать собственное решение. И я включил его в состав своей PHP библиотеки.
EF>Если кто знает другое решение, которое действительно работает — пишите в ветку.
EF>Вот моя статья на тему.
EF>http://emission-framework.com/article/vitche.wordpress.com/php-framework/iphone-json-soap-client-vitche-emission-php-framework.html
Идея конечно интересная тем более что существенно сокращает служебный трафик.
Сомнения только в совместимости всего этого с конкретной инфраструктурой.
Всем доброе время суток.
Вопрос довольно актуален —
как достучаться к SOAP веб-службе (например WCF) с мобильного клиента?
Тот, кто писал под
iPhone, знает, что проблема не простая. На
JaveME — тем более. На других платформах типа
Bada — не знаю.
Android — не особо полезная вещь (там есть
Apache Axis), но может пригодиться.
Лично мне пришлось написать собственное решение. И я включил его в состав своей PHP библиотеки.
Если кто знает другое решение, которое действительно работает — пишите в ветку.
Вот моя статья на тему.
http://emission-framework.com/article/vitche.wordpress.com/php-framework/iphone-json-soap-client-vitche-emission-php-framework.html
Общий алгоритм работы следующий:
1. Мобильный клиент обращается на
PHP сервер через
REST интерфейс посредством самого обыкновенного HTTP запроса;
2. Веб-служба на стороне
Emission-Framework получает
REST запрос и шлюз превращает его в SOAP-запрос;
3. SOAP-запрос выполняется с помощью
SoapClient — встроенного класса
PHP;
4. Результат сериализуется в
JSON и возвращается назад клиенту.
Предполагаем, что разобрать
JSON для мобильного клиента — не проблема.
Вот код шлюза из моей библиотеки:
<?php
/**
* PHP Framework Integration HTTP-to-SOAP Gateway Web Service class
* This service makes SOAP services available to callers through the usual
* HTTP REST interface
**/
/**
* Description of HTTPSOAPGatewayWebService
*
* @author Andrew <andrew@vitche.com>
* @author Frozen Rain <frozenrain@mail.ru>
**/
class HTTPSOAPGatewayWebService extends HTTPWebService {
function __construct() {
parent::__construct('');
}
function onMethodCall($strClassName, $strMethodName, $arRequest) {
// Parse request
$url = null;
$arguments = array();
foreach ($arRequest as $key => $value) {
if ('url' == $key) {
$url = $value;
} else {
$arguments[$key] = $value;
}
}
$reference = new SOAPWebServiceReference($url);
return JSONSerializer::toString($reference->execute($strMethodName, $arguments));
}
}
?>
Всех, кого эта тема заинтересовала, просьба писать мне или на

.
И, на последок,
REST веб-службы в библиотеке
Vitche Emission Framework запускаются на выполнение так:
new HTTPSOAPGatewayWebService();
Это пригодится в экспериментах с кодом!
Всем удачи! Жду фидбеков!
Здравствуйте, henson, Вы писали:
H>Здравствуйте, emission-framework, Вы писали:
EF>>Всем доброе время суток.
EF>>Вопрос довольно актуален — как достучаться к SOAP веб-службе (например WCF) с мобильного клиента?
EF>>Тот, кто писал под iPhone, знает, что проблема не простая. На JaveME — тем более. На других платформах типа Bada — не знаю. Android — не особо полезная вещь (там есть Apache Axis), но может пригодиться.
EF>>Лично мне пришлось написать собственное решение. И я включил его в состав своей PHP библиотеки.
EF>>Если кто знает другое решение, которое действительно работает — пишите в ветку.
EF>>Вот моя статья на тему.
EF>>http://emission-framework.com/article/vitche.wordpress.com/php-framework/iphone-json-soap-client-vitche-emission-php-framework.html
H>Идея конечно интересная тем более что существенно сокращает служебный трафик.
H>Сомнения только в совместимости всего этого с конкретной инфраструктурой.
Да, если, например, у заказчика отсутствует желание ставить для этого PHP сервер со шлюзом — то это становится большой проблемой.
Давайте обдумаем:
1. Можно написать аналогичный
шлюз для платформы заказчика;
2. А что если мы на сайте добавим
поддомен, на котором всегда есть работающий шлюз. Кто-то будет этим пользоваться? Хотя, идея прогонять данные через сторонний сервер не очень хороша. Ни для владельца сервера (траффик), ни для клиента (безопасность данных).
Вариант №2 мне нравится. Интересно, что скажут потенциальные пользователи?