Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php类扩展SoapClient使用MTOM生成SOAP消息_Php_Soap_Mtom - Fatal编程技术网

使用php类扩展SoapClient使用MTOM生成SOAP消息

使用php类扩展SoapClient使用MTOM生成SOAP消息,php,soap,mtom,Php,Soap,Mtom,我创建了一个扩展SoapClient并重写_doRequest()函数的类,以便能够向使用MTOM的外部Web服务器添加附件 基本上,在调用父项::_doRequest()之前,我编辑第一个参数$request以添加MTOM部分。我的问题是,我得到了“错误读取XMLStreamReader” 我不确定这是因为生成的消息有错误,还是SoapClient::\uu doRequest()检测到非xml部分并抛出soapfault 以下是我生成的soap消息: Content-Type: mu

我创建了一个扩展SoapClient并重写_doRequest()函数的类,以便能够向使用MTOM的外部Web服务器添加附件

基本上,在调用父项::_doRequest()之前,我编辑第一个参数$request以添加MTOM部分。我的问题是,我得到了“错误读取XMLStreamReader”

我不确定这是因为生成的消息有错误,还是SoapClient::\uu doRequest()检测到非xml部分并抛出soapfault

以下是我生成的soap消息:

    Content-Type: multipart/related; boundary=MIMEBoundary4A7AE22984E7738034;
type="application/xop+xml"; start="<0.09BC7F4BE2E4L7EF1B@example.org>";
start-info="text/xml; charset=utf-8"


--MIMEBoundary2013-04-24_0
content-type: application/xop+xml; charset=utf-8; type="application/soap+xml;"
content-transfer-encoding: binary
content-id: <0.09BC7F4BE2E4L7EF1B@example.org>

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1{endpoint} xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><SOAP-ENV:Header>
        <wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <wsse:UsernameToken>
                <wsse:Username>{username}</wsse:Username>
                <wsse:Password>{password}</wsse:Password>
            </wsse:UsernameToken>
        </wsse:Security></SOAP-ENV:Header><SOAP-ENV:Body><ns1:creerDepot/><param1>depot2013-04-24_0</param1><param2></param2></SOAP-ENV:Body></SOAP-ENV:Envelope>


--MIMEBoundary2013-04-24_0
content-type: application/octet-stream
content-transfer-encoding: binary
content-id: <2013-04-24_0>


--MIMEBoundary2013-04-24_0--{file}
内容类型:多部分/相关;边界=MIME边界4A7AE22984E7738034;
type=“应用程序/xop+xml”;start=“”;
start info=“text/xml;charset=utf-8”
--MimeBoundary 2013-04-240
内容类型:应用程序/xop+xml;字符集=utf-8;type=“应用程序/soap+xml;”
内容传输编码:二进制
内容id:
{username}
{密码}
depot2013-04-24_0
--MimeBoundary 2013-04-240
内容类型:应用程序/八位字节流
内容传输编码:二进制
内容id:
--MIMEBoundary2013-04-24_0--{file}

有人能告诉我问题是来自生成的包含错误的消息,还是来自不想发送它的_doRequest()。

我知道这可能太晚了,但您的{file}标记位置正确吗?我认为应该在接近边界之前