Раньше я работал с 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>
Я понятия не имею, в чем проблема, или как отладить эту ошибку, пожалуйста, помогите!
Запрос мыла не выполняется, так как предполагаемый веб-сервис не вернул правильный тип контента (content type 'text/xml; charset=utf-8' was not the expected type 'application/soap+xml; charset=utf-8'
). Это может иметь несколько причин, и вам необходимо выяснить, какая из них относится к вам:
SoapClient
в PHP. Я вижу, у вас есть Service1.asmx/?wsdl
в вашем URL, не должно ли быть Service1.asmx?wsdl
, или же Service1.wsdl
? Во всяком случае, проект ASP.NET должен дать вам правильный URL-адрес при запуске проекта.trace
при создании SoapClient, чтобы узнать запрос и ответ (см. конструктор док подробности о том, как его установить, и __getLastResponse ()/__getLastResponseHeaders ())Других решений пока нет …