Исключение связи с Windows Phone 7 и PHP Web Service - PullRequest
1 голос
/ 08 ноября 2011

У меня есть веб-сервис PHP, созданный с помощью библиотеки NuSOAP. Я адаптировал веб-сервис для работы с Windows Phone, и все выглядит нормально.

Проблема в том, что когда я получаю ответ, я получаю сообщение CommunicationException. Я думаю, что это URL-адрес конечной точки, которая не распознает? WSDL.

Я искал информацию об этом, но не могу найти ничего, чтобы решить это.

Мой код выглядит следующим образом:

       private void button1_Click(object sender, RoutedEventArgs e)
       {
        var test = new TS.TestWSDLPortTypeClient();
        test.sumarCompleted += test_sumarCompleted;
        test.sumarAsync(3, 4);
       }

      void test_sumarCompleted(object sender, TS.sumarCompletedEventArgs e)
      {
      MessageBox.Show(e.Result.ToString();
      }

И мой .ClientConfig

<configuration>
             <system.serviceModel>
                <bindings>
                   <basicHttpBinding>
                    <binding name="TestWSDLBinding" maxBufferSize="2147483647"                                      maxReceivedMessageSize="2147483647">
                     <security mode="None" />
                 </binding>
             </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://192.168.1.38/ws_test.php" binding="basicHttpBinding"
                bindingConfiguration="TestWSDLBinding" contract="TestWSDL.TestWSDLPortType"
                name="TestWSDLPort" />
              </client>
              </system.serviceModel>
               </configuration>

Я также проверял:

<endpoint address="http://192.168.1.38/ws_test.php?wsdl"...

Я также проверил доменное имя, ip: 127.0.0.1, другие порты и т. Д.

Код PHP:

#Declaración del servidor nusoap
$server = new soap_server();
$server->configureWSDL("TestWSDL","urn:TestWSDL", "http://libreriacloud.sytes.net/ws_monster/ws_test.php?wsdl");
$server->soap_defencoding = 'UTF-8'; 

#Registro de la Funcion Sumar
$server->register(
    'sumar',
    array(
        'x' => 'xsd:int',
        'y' => 'xsd:int'
        ),
    array('return' => 'xsd:int'),
    'urn:TestWSDL',
    'urn:TestWSDL/sumar',
    'document',
    'literal',
    'Suma dos datos'
);

function sumar($x, $y)
{
    return $x+$y;
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA); 

URL WSDL: http://libreriacloud.sytes.net/ws_monster/ws_test.php

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Я решил свою проблему.Вместо «документа», чтобы «поставить» документ », потому что он видел в svc, я с ума сошел, чтобы найти ответ, в конце концов, пошел методом проб и ошибок.*

#Declaración del servidor nusoap
$server = new soap_server();
$server->configureWSDL("TestWSDL","urn:TestWSDL", "http://libreriacloud.sytes.net/ws_monster/ws_test.php?wsdl");
$server->soap_defencoding = 'UTF-8'; 

#Registro de la Funcion Sumar
$server->register(
    'sumar',
    array(
        'x' => 'xsd:int',
        'y' => 'xsd:int'
        ),
    array('return' => 'xsd:int'),
    'urn:TestWSDL',
    'urn:TestWSDL/sumar',
    '',
    'literal',
    'Suma dos datos'
);

function sumar($x, $y)
{
    return $x+$y;
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA); 

То же самое, но под

'urn:TestWSDL/sumar',

Я ставлю одинарные кавычки

0 голосов
/ 08 ноября 2011

Кажется, у вас есть некоторый контроль над веб-сервисом.Если это так, я бы держался подальше от SOAP и пошел бы к более простому технологическому стеку, например, REST с JSON.Зачем?Поскольку WCF является мощным, но сложным для отладки / настройки и т. Д.

Существует множество хороших библиотек для работы с JSON в .NET: http://json.codeplex.com/ и для REST, если вам нужно больше, чем WebClient./ WebRequest): http://restsharp.org/

Извините, если это не тот ответ, который вы ожидали, но я много работаю с WCF, чтобы знать, когда его не использую.

...