Клиент веб-службы .NET - клиент обнаружил тип содержимого ответа «text / plain», но ожидаемый «text / xml» - PullRequest
0 голосов
/ 24 июня 2009

У меня есть веб-страница ASP.NET, в которой есть веб-ссылка на SOAP WSDL. Если я вызываю методы, связанные с этим WSDL (методы живут на другом сервере), все работает нормально. Однако я хотел бы иметь возможность динамически изменять адрес конечной точки, на которую указывает WSDL. Причина в том, что мы размещаем один и тот же набор веб-сервисов для разных групп, и нам нравится отслеживать, кто использует веб-сервисы. Итак, каждый набор имеет свой собственный URL.

Я пытался изменить свойство "Url" на моем объекте-клиенте на другую конечную точку, но при этом методы возвращают эту ошибку:

Клиент обнаружил тип содержимого ответа «text / plain», но ожидаемый «text / xml»

Я думаю, что свойство Url вводит прокси-класс в заблуждение, что я сейчас использую веб-сервис REST?

Вот мой код:


mySoapNamespace.mySoapClient soapClient = new mySoapNamespace.mySoapClient();

//next I try to change the endpoint URL of the WSDL, misguided? ...
soapClient.Url = "http://a_different_url/my_soap_server.wsdl";
string result = soapClient.myTestMethod(); 
Response.Write(result);

И вот где я получаю ошибку. Кто-нибудь знает исправление или другой способ динамического изменения конечной точки вызова SOAP?

1 Ответ

1 голос
/ 24 июня 2009

Хорошо! Я понял, что я делаю не так. Когда я изменяю свойство Url моей веб-ссылки, мне нужно указать конечную точку code (это мыльный адрес в разделе wsdl: port WSDL). Я указывал сам WSDL:

soapClient.Url = "http://a_different_url/my_soap_server.wsdl";

... в действительности я должен был ссылаться на PHP-скрипт, стоящий за ним.

soapClient.Url = "http://a_different_url/my_soap_server.php";

Я могу ясно увидеть, какой прокси-класс устанавливает мой URL (когда я импортирую WSDL), просмотрев файл web.config. В нем есть раздел appSettings, в котором перечислены URL-адреса. И я заметил, что он указывал на файл кода, а не на WSDL на удаленном сервере.

...