問題描述
我一直在嘗試向soap服務器發送正確的請求.我不斷收到錯誤消息.
這是我的 xml
獲取最后一個請求(添加換行符):
得到最后的回應:
請求頭:
POST/DPWebService/CardsService.svc/ICardsService HTTP/1.1主機:d67v7tg1連接:保持活動用戶代理:PHP-SOAP/5.2.9-1內容類型:文本/xml;字符集=utf-8SOAPAction:http://tempuri.org/ICardsService/TestData1"內容長度:254
這是回復.
object(SoapFault)#2 (8) {[消息:受保護"]=>string(142) "無法處理消息,因為內容類型 'text/xml; charset=utf-8' 不是預期的類型 'application/soap+xml; charset=utf-8'."[字符串:私人"]=>字符串(0)"[代碼:受保護"]=>整數(0)[文件:受保護"]=>string(32) "C:localhostwww est5index.php"[行:受保護"]=>整數(208)["trace:private"]=>數組(3){[0]=>數組(4){[功能"]=>字符串(11)__doRequest"[類"]=>字符串(10)SoapClient"[類型"]=>字符串(2)->"[參數"]=>數組(5){[0]=>字符串(254)1"[1]=>字符串(59)http://d67v7tg1/DPWebService/CardsService.svc/ICardsService"[2]=>字符串(42)http://tempuri.org/ICardsService/TestData1"[3]=>整數(1)[4]=>整數(0)}}[1]=>數組(4){[功能"]=>字符串(6)__call"[類"]=>字符串(10)SoapClient"[類型"]=>字符串(2)->"[參數"]=>數組(2){[0]=>字符串(9)測試數據1"[1]=>數組(1){[0]=>數組(2){[iVal"]=>整數(1)[strVal"]=>字符串(5)Proba"}}}}[2]=>數組(6){[文件"]=>string(32) "C:localhostwww est5index.php"[行"]=>整數(208)[功能"]=>字符串(9)測試數據1"[類"]=>字符串(10)SoapClient"[類型"]=>字符串(2)->"[參數"]=>數組(1){[0]=>數組(2){[iVal"]=>整數(1)[strVal"]=>字符串(5)Proba"}}}}[故障字符串"]=>string(142) "無法處理消息,因為內容類型 'text/xml; charset=utf-8' 不是預期的類型 'application/soap+xml; charset=utf-8'."[故障代碼"]=>字符串(4)HTTP"}
得到最后的回應:
請求頭:
POST/DPWebService/CardsService.svc/ICardsService HTTP/1.1主機:d67v7tg1連接:保持活動用戶代理:PHP-SOAP/5.2.9-1內容類型:文本/xml;字符集=utf-8SOAPAction:http://tempuri.org/ICardsService/TestData1"內容長度:254
PHP 的原生 SOAP 擴展是一個不可調試的二進制大塊.
根據 PHP 手冊中的此注釋,它被硬編碼為使用 MIME 內容類型 application/soap+xml
發送 SOAP 請求.
您的 SOAP 服務器似乎拒絕這種內容類型,只需要 text/xml
.
根據這個 SOAP 1.2 標準文檔,關于 SOAP over HTTP 的第 7.1.4 節:
<塊引用>符合此綁定的實現:
- 必須能夠發送和接收使用媒體類型application/soap+xml"序列化的消息,A.應用程序/soap+xml 媒體類型.
您使用的 SOAP 服務器不符合 1.2 標準.
(根據記錄,這是我第一次看到有人對 PHP SOAP 擴展提出問題,而問題不是與擴展本身有關!)>
I've been trying for a long time to send right request to soap server. I'm keep getting error message.
Here is my xml
GET LAST REQUEST (newlines added):
<?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:TestData1><ns1:iVal>1</ns1:iVal></ns1:TestData1></SOAP-ENV:Body>
</SOAP-ENV:Envelope>
GET LAST RESPONSE :
REQUEST HEADERS:
POST /DPWebService/CardsService.svc/ICardsService HTTP/1.1
Host: d67v7tg1
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.2.9-1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/ICardsService/TestData1"
Content-Length: 254
Here is the response.
object(SoapFault)#2 (8) {
["message:protected"]=> string(142) "Cannot process the message because the content type 'text/xml; charset=utf-8' was not the expected type 'application/soap+xml; charset=utf-8'."
["string:private"]=> string(0) ""
["code:protected"]=> int(0)
["file:protected"]=> string(32) "C:localhostwww est5index.php"
["line:protected"]=> int(208)
["trace:private"]=> array(3) {
[0]=> array(4) {
["function"]=> string(11) "__doRequest"
["class"]=> string(10) "SoapClient"
["type"]=> string(2) "->"
["args"]=> array(5) {
[0]=> string(254) " 1 "
[1]=> string(59) "http://d67v7tg1/DPWebService/CardsService.svc/ICardsService"
[2]=> string(42) "http://tempuri.org/ICardsService/TestData1"
[3]=> int(1)
[4]=> int(0)
}
}
[1]=> array(4) {
["function"]=> string(6) "__call"
["class"]=> string(10) "SoapClient"
["type"]=> string(2) "->"
["args"]=> array(2) {
[0]=> string(9) "TestData1"
[1]=> array(1) {
[0]=> array(2) {
["iVal"]=> int(1)
["strVal"]=> string(5) "Proba"
}
}
}
}
[2]=> array(6) {
["file"]=> string(32) "C:localhostwww est5index.php"
["line"]=> int(208)
["function"]=> string(9) "TestData1"
["class"]=> string(10) "SoapClient"
["type"]=> string(2) "->"
["args"]=> array(1) {
[0]=> array(2) {
["iVal"]=> int(1)
["strVal"]=> string(5) "Proba"
}
}
}
}
["faultstring"]=> string(142) "Cannot process the message because the content type 'text/xml; charset=utf-8' was not the expected type 'application/soap+xml; charset=utf-8'."
["faultcode"]=> string(4) "HTTP"
}
GET LAST RESPONSE :
REQUEST HEADERS:
POST /DPWebService/CardsService.svc/ICardsService HTTP/1.1
Host: d67v7tg1
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.2.9-1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/ICardsService/TestData1"
Content-Length: 254
PHP's native SOAP extension is an undebuggable binary blob of horrors.
According to this comment in the PHP manual, it is hard-coded to send SOAP requests with the MIME content type application/soap+xml
.
Your SOAP server seems to reject this content type, expecting only text/xml
.
According to this SOAP 1.2 standard document, section 7.1.4 on SOAP over HTTP:
Conforming implementations of this binding:
- MUST be capable of sending and receiving messages serialized using media type "application/soap+xml" whose proper use and parameters are described in A. The application/soap+xml Media Type.
The SOAP server you are using is not complaint with the 1.2 standard.
(For the record, this is the first time I've ever, ever seen anyone with a question about the PHP SOAP extension where the problem wasn't with the extension itself!)
這篇關于內容類型 'text/xml;charset=utf-8' 不是預期的類型 'application/soap+xml;字符集=utf-8'的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!