Возврат объекта JSON из PHP SoapServer

Как я могу заставить мой PHP SoapServer отправлять объект JSON в качестве ответа вместо документа XML?

Благодарю.

2 ответа

Решение

Это не SOAPтак что нет. Он может включать jsonstring в некоторый xml-узел, вот и все. Вы можете хотеть просто REST обслуживание сервера json,

Вы можете убить его, сделав по определению НЕ МЫЛО, а какой-то странный гибрид:

<?php
class ThisIsNotASoapServer extends SoapServer {

}
function test(){
        //should have a return
        //return range(1,9);
        //but totally breaks it by:
        echo json_encode(range(1,9));
        //the exit here is needed
        exit;
}
$server = new ThisIsNotASoapServer(null, array('uri' => 'http://test-uri/','soap_version' => 1));
$server->addFunction("test");
$server->handle('<?xml version="1.0"?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
        <m:Test xmlns:m="Some-URI"/>
    </SOAP-ENV:Body>
 </SOAP-ENV:Envelope>');
?>

... так, технически это возможно, но я подозреваю, что нет ни одного клиента, который бы это понимал.

Взгляните на http://www.sinatrarb.com/ очень легко создать спокойный веб-сервис для возврата объекта json.

зависит от ваших требований - SOAP - это запрос xml, это не означает, что формат возвращаемого значения также должен быть SOAP (XML), который вы можете легко опубликовать в виде строки JSON.

Может быть, если вы можете предоставить больше информации, мы можем помочь больше?

Другие вопросы по тегам