Почему я получаю ответ об ошибке не типа text / xml: text / html?

Я новичок в использовании SOAP для связи с веб-службами, я недавно написал клиент на php для связи с веб-службой, но получил это сообщение об ошибке:

«Ответ об ошибке не типа text / xml: text / html»

Что-то не так с форматом, который я отправляю? Пожалуйста, найдите запрос ниже:

Request

POST /MobileCashPayout.asmx HTTP/1.0
Host: www.mtn.com
User-Agent: NuSOAP/0.9.5 (1.123)
Content-Type: text/xml; charset=ISO-8859-1
SOAPAction: ""
Content-Length: 971

<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns5667:Payout xmlns:ns5667="http://tempuri.org"><__numeric_0 xsi:type="xsd:string">testmerc</__numeric_0><__numeric_1 xsi:type="xsd:string">testmerc</__numeric_1><__numeric_2 xsi:type="xsd:string">256750000005</__numeric_2><__numeric_3 xsi:type="xsd:string">256753986532</__numeric_3><__numeric_4 xsi:type="xsd:string">256750000005</__numeric_4><__numeric_5 xsi:type="xsd:string">100.00</__numeric_5><__numeric_6 xsi:type="xsd:string">2222</__numeric_6><__numeric_7 xsi:type="xsd:string"></__numeric_7><__numeric_8 xsi:type="xsd:string">BETNET</__numeric_8></ns5667:Payout></SOAP-ENV:Body></SOAP-ENV:Envelope>

person SirBT    schedule 16.07.2012    source источник
comment
Похоже, вы получаете ответ html, а не ожидаемый xml. Вы можете попробовать опубликовать свой запрос через Fiddler, чтобы вы могли изучить фактический ответ, вдали от ограничений вашего кода.   -  person Sir Crispalot    schedule 17.07.2012
comment
@ Сэр Криспалот. Расскажите, пожалуйста, еще о Fiddler? Это плагин для браузера? или библиотека php?   -  person SirBT    schedule 17.07.2012
comment
Это программа, которая позволяет создавать HTTP-запросы и просматривать необработанные ответы. Он также действует как прокси-сервер, так что вы можете передавать все запросы через него, чтобы проверять их на лету. fiddler2.com/fiddler2.   -  person Sir Crispalot    schedule 17.07.2012


Ответы (1)


Вы можете попробовать отправить заголовок «Accept: text / xml», чтобы сообщить серверу, что вы ожидаете ответа в формате XML.

person Mike Brant    schedule 16.07.2012
comment
как я это сделал? Не могли бы вы продемонстрировать, пожалуйста? - person SirBT; 17.07.2012
comment
Итак, я вижу, что вы используете NuSOAP. Взгляните на этот элемент StackOverflow stackoverflow.com/questions/945922/ Здесь есть ответ, который намекает, что используемая вами версия протокола SOAP может быть проблемой. Предлагается передать параметр конфигурации при создании экземпляра, чтобы использовать протокол SOAP 1.1 как большинство современных клиентов SOAP-сервера ожидают использования типа содержимого application / soap + xml. Для получения лучших результатов вы можете попробовать использовать собственную реализацию PHP SOAP. - person Mike Brant; 17.07.2012
comment
Похоже, мой клиент ожидает только тип содержимого text / xml, а не text / html или applicationatoin / soap + xml. Таким образом, предложение принять application / soap + xml, к сожалению, не сработало ... Любые другие предложения приветствуются. - person SirBT; 17.07.2012