1

NuSOAPライブラリを使用して構築されたPHPWebサービスがあります。WebサービスをWindowsPhoneで動作するように調整しましたが、すべて問題ないようです。

問題は、応答を受信すると、CommunicationExceptionが発生することです。これが?wsdlを認識しないエンドポイントのURLだと思います。

それに関する情報を検索しましたが、解決するものが見つかりません。

私のコードは次のとおりです。

       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); 

WSDLのURLは次のとおりです。http://libreriacloud.sytes.net/ws_monster/ws_test.php

4

2 に答える 2

1

私は自分の問題を解決しました。彼が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',

一重引用符で囲みます

于 2011-11-08T19:50:36.767 に答える
0

Webサービスをある程度制御できるようです。もしそうなら、私はSOAPから離れて、JSONを使用したRESTのようなより単純なテクノロジースタックを選びます。なんで?WCFは強力ですが、デバッグ/セットアップなどが難しいためです。

.NETでJSONを操作するための優れたライブラリがたくさんあります:http://json.codeplex.com/ そしてRESTの場合はWebClient / WebRequest以上のものが必要です):http ://restsharp.org/

期待した答えではない場合は申し訳ありませんが、WCFを使用しない場合は、WCFと多くの作業を行っています。

于 2011-11-07T22:54:49.107 に答える