Я пытаюсь вызвать php веб-сервис с использованием WCF. Я погуглил некоторые публичные php-сервисы, чтобы посмотреть, смогу ли я воспроизвести полученную ошибку, и я создал 2 разных модульных теста для демонстрации.
Тест, который не прошел, я получаю следующую ошибку:
System.ServiceModel.ProtocolException: тип содержимого text / xml; charset = ISO-8859-1 ответного сообщения не соответствует типу содержимого привязки (text / xml; charset = utf-8). При использовании пользовательского кодировщика убедитесь, что метод IsContentTypeSupported реализован правильно. Первые 601 байт ответа были: '
Вот модульные тесты:
[TestMethod]
public void WCF_Call_To_SiteInspect() {
//This service doesn't work. It gets the same communication error as our own servers
var soapClien = new SiteInspect.SiteInspectPortClient();
var response = soapClien.doSiteInspect("Any", "Any", "www.google.com");
Assert.IsTrue(response.serverTime.Length > 0);
}
[TestMethod]
public void WCF_Call_To_FinnService() {
//This service works.... in looking at the wsdl it appears that it references a separate wsdl file. Is this the reason?
var soapClient = new NuSoapFinnService.finnwordsPortTypeClient();
var finnLyric = soapClient.getRandomNeilFinnLyric("text");
Assert.IsTrue(finnLyric.Length > 0);
}
Тестовый пример внизу (служба Finn) прошел по следующему URL: http://www.nickhodge.com/nhodge/finnwords/finnwords.wsdl
Первый тестовый пример не удался, учитывая следующий URL: http://www.flash -db.com / services / ws / siteInspect.wsdl
Единственное отличие, которое я вижу в wsdl, заключается в том, что служба Finn ссылается на посторонний файл. xmlns: tns = "http://www.nickhodge.com/nhodge/finnwords/finnwords.wsdl. Это ошибка с WCF, которая ожидает wsdl в определенном формате?