首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SOAP::Lite客户端处理发送缺少名称空间规范的响应的服务器

使用SOAP::Lite客户端处理发送缺少名称空间规范的响应的服务器
EN

Stack Overflow用户
提问于 2017-08-01 15:51:03
回答 2查看 191关注 0票数 0

我正在编写一个SOAP::Lite客户机,以便与SOAP服务器协同工作,该服务器有时会发送缺少名称空间规范的响应。这是我第一次用SOAP做任何事情,所以我一点也不了解。下面是一个响应示例:

代码语言:javascript
复制
HTTP/1.1 200 OK
Server: "OS/version" UPnP/1.0 "product/version"
Content-Length: 83219
Content-Type: text/xml; charset="UTF-8"
Client-Date: Tue, 01 Aug 2017 06:30:44 GMT
Client-Peer: 192.168.1.123:5000
Client-Response-Num: 1

<?xml version="1.0" encoding="UTF-6"?>
<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:GetDataResponse
        xmlns:m="urn:BLACKBOX:service:DataSource:1">
        <DataBlob xsi:type="xsd:base64Binary">Ikf7SPJ...SsA==</DataBlob>
    </m:GetDataResponse>
    <ResponseCode>0</ResponseCode>
</soap-env:Body>
</soap-env:Envelope>

请注意“xsi”命名空间的使用没有指定。可能也应该有一个'xsd‘?SOAP::Lite给出了这个错误消息:

代码语言:javascript
复制
failed:  Unresolved prefix 'xsi' for attribute 'xsi:type'

假设我无法控制服务器,我该如何在客户端使用SOAP::Lite解决这个问题呢?有什么方法可以让我告诉SOAP::Lite使用我提供的名称空间吗?

EN

回答 2

Stack Overflow用户

发布于 2017-08-01 20:04:29

服务器坏了,您应该抛出一个错误。同时,您可以通过编辑传入的数据、添加

Envelope元素的这些定义

代码语言:javascript
复制
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
票数 0
EN

Stack Overflow用户

发布于 2017-08-02 21:00:56

只需添加到SOAP::Lite对象:

代码语言:javascript
复制
$soap->serializer->register_ns('http://www.w3.org/2001/XMLSchema' => 'xmlns:xsd');

$soap->serializer->register_ns('http://www.w3.org/2001/XMLSchema-instance' => 'xmlns:xsi');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45431966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档