我正在尝试使用 MyMemory 中的翻译网络服务:http: //mymemory.translated.net/doc/spec.php
不幸的是,Zend_Soap_Client 确实生成了一个服务无法识别的 XML 请求对象。我猜这是因为标签中的 ns1-Attribute(命名空间)。那么有人知道如何删除它们吗?
这基本上就是我所做的:
$client = new Zend_Soap_Client('http://mymemory.translated.net/otms/?wsdl', array(
    'soap_version' => SOAP_1_1
));
然后我调用函数:
try {
    $client->otmsGet(array(
        'key' => 'xxx',
            'q' => array(
                'source' => 'Computer Science',
                'source_lang' => 'en-US',
                'target_lang' => 'de-DE'
            )
        ));
} catch(Exception $e) {
    print $client->getLastRequest();
}
生成的 XML 如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/">
    <SOAP-ENV:Body>
        <ns1:otmsGet>
            <ns1:key>xxx</ns1:key>
            <ns1:q>
                <ns1:source>Computer Science</ns1:source>
                <ns1:source_lang>en-US</ns1:source_lang>
                <ns1:target_lang>de-DE</ns1:target_lang>
            </ns1:q>
        </ns1:otmsGet>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
它实际上应该是这样的:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body>
        <otmsGet xmlns="http://tempuri.org/">
            <key xmlns:SOAPSDK1="http://tempuri.org/">mmDemo123</key>
            <q xmlns:SOAPSDK2="http://tempuri.org/">
                <source>control panel</source>
                <source_lang>en-US</source_lang>
                <target_lang>es-ES</target_lang>
            </q>
        </otmsGet>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
谢谢你的帮助!