Использование служб WCF с переполнением стека

Раньше я работал с Asp.net, но это мой третий день обучения PHP …

Я хочу использовать очень простой пример веб-сервиса WCF и использовать его с php-сайта. Я взял этот пример: Использование WCF Services с PHP

Я уверен, что сделал все так, как было показано, вот код php:

<?php

$wcfClient = new SoapClient('http://localhost:8732/Design_Time_Addresses/Translation/Service1/?wsdl');

$args = array('text' => 'Hello World');
$response = $wcfClient->ENtoJP($args);

echo $response->ENtoJPResult;
?>

Но у меня все еще есть следующая ошибка на странице:

Неустранимая ошибка: исключение Uncaught SoapFault: [HTTP] Невозможно обработать сообщение, так как тип содержимого ‘text / xml; charset = utf-8 ‘не был ожидаемым типом’ application / soap + xml; кодировка = UTF-8′ . в C: \ wamp \ www \ geogram.php: 6 Трассировка стека: # 0 [внутренняя функция]: SoapClient-> __doRequest (‘http: // localhos …’, ‘Http: // tempuri….’, 1, 0) # 1 C: \ wamp \ www \ geogram.php (6): SoapClient -> __ call (‘ ENtoJP ‘, Array) # 2 C: \ wamp \ www \ geogram.php (6): SoapClient -> ENtoJP (Array) # 3 {main} в C: \ wamp \ www \ geogram.php в строке 6

Сообщение об ошибке

Вот мой конфигурационный файл:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

<system.web>
<compilation debug="true" />
</system.web>
<!-- Lors du déploiement du projet de bibliothèque du service, le contenu du fichier de configuration doit être ajouté au fichier app.config
de l'hôte. System.Configuration ne prend pas en charge les fichiers de configuration pour les bibliothèques. -->
<system.serviceModel>
<services>
<service name="Translation.Translation">
<endpoint address="" binding="wsHttpBinding" contract="Translation.ITranslation">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8732/Design_Time_Addresses/Translation/Service1/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- Pour éviter la divulgation des informations sur les métadonnées,
définissez la valeur ci-dessous sur false et supprimez le point de terminaison des métadonnées ci-dessus avant le déploiement -->
<serviceMetadata httpGetEnabled="True"/>
<!-- Pour recevoir les détails d'exception des erreurs à des fins de débogage,
définissez la valeur ci-dessous sur true.  Définissez-la sur false avant le déploiement
pour éviter la divulgation des informations d'exception -->
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

</configuration>

Я понятия не имею, в чем проблема, или как отладить эту ошибку, пожалуйста, помогите!

0

Решение

Запрос мыла не выполняется, так как предполагаемый веб-сервис не вернул правильный тип контента (content type 'text/xml; charset=utf-8' was not the expected type 'application/soap+xml; charset=utf-8'). Это может иметь несколько причин, и вам необходимо выяснить, какая из них относится к вам:

  1. Вы указали неверный URL веб-сервиса при создании SoapClient в PHP. Я вижу, у вас есть Service1.asmx/?wsdl в вашем URL, не должно ли быть Service1.asmx?wsdl, или же Service1.wsdl? Во всяком случае, проект ASP.NET должен дать вам правильный URL-адрес при запуске проекта.
  2. Веб-служба не работает, но порт 8732 используется другим экземпляром IIS
  3. Веб-сервис запущен, но работает неправильно, вы можете использовать trace при создании SoapClient, чтобы узнать запрос и ответ (см. конструктор док подробности о том, как его установить, и __getLastResponse ()/__getLastResponseHeaders ())
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]