1

私はWebサービスと石鹸にまったく慣れていません。チュートリアルに従って、次のコードを用意しました。

SOAP サーバー:

<?php
include("lib/nusoap.php");
include("getDB.php");

function getUsers()
{
    $user_id = $_GET['user_id'];
    $result = mysql_query("SELECT * FROM -table name- WHERE user_id = '$user_id'");
    $try    = mysql_fetch_array($result);
    return join(",", array(
        $result['username'], $result['password']
    ));
}

$server = new soap_server();
$server->register("getUsers");
$server->service($HTTP_RAW_POST_DATA);
?>

SOAP クライアント:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title></title>

      <!-- Error Reporting -->
      <?php 
         error_reporting(E_ALL);
         ini_set('display_errors', '1'); 
      ?>
   </head>
   <body>
        <?php
            include("lib/nusoap.php");
            $client = new nusoap_client("http://localhost/wp-content/themes/blackbird/phpwizard/HTML5Application/public_html/Webservice.php?user_id=4");

            $error = $client->getError();

            if ($error) 
            {
                echo "<h2>Constructor error</h2><pre>" . $error . "</pre>";
            }

            $result = $client->call("getUsers", array("category" => "books"));   

            if ($client->fault) 
            {
                echo "<h2>Fault</h2><pre>";
                print_r($result);
                echo "</pre>";
            }

            else 
            {
                $error = $client->getError();

                if ($error) 
                {
                    echo "<h2>Error</h2><pre>" . $error . "</pre>";
                }

                else 
                {
                    echo "<h2>Books</h2><pre>";
                    echo $result;
                    echo "</pre>";
                }
            }

        ?>
    </body>
</html>

SOAP クライアントをロードすると、次のエラーが表示されます。

3 行目の SOAP ペイロードの解析中に XML エラーが発生しました: 予約済みの XML 名

なぜこれが起こっているのか分かりません。

4

1 に答える 1

2

<?xmlこの質問XML error parsing SOAP payload: Reserved XML Nameで述べたように、前に空白を削除してみてください。

また、その質問のように、NuSOAP クライアントのダンプを貼り付けて、何がレンダリングされているかを確認することは可能ですか。そこでデバッグを開始し、例に表示されている内容で応答しましょう。

さらに、これは私が過去に使用したチュートリアルです。Php 自体は SOAP とうまく連携するので、特別なものが必要でない限り、別のライブラリのレイヤーを追加する前に試してみてください。この例を試して、うまくいくかどうかを確認してください。
IBM オープンソース Php SoapServerClient の例。

于 2013-05-13T16:48:14.680 に答える