ホームページ  >  記事  >  バックエンド開発  >  nusoap がオブジェクトの配列を渡す

nusoap がオブジェクトの配列を渡す

WBOY
WBOYオリジナル
2016-07-30 13:30:111174ブラウズ

原文: http://www.cnblogs.com/Jaypei/archive/2009/04/09/1432521.html

前回、nuSOAP を使用してオブジェクトを転送することに成功しましたが、実際の運用では別の要件が存在することがよくあります。プロセスはリモートでオブジェクトの配列を返します。午後 1 日かかってようやくテストが成功したので、みんなと共有するのが待ちきれません:)

準備

まずクラス UserInfo を定義します:

class UserInfo {
var $UserName;
//... var $Sequence;
}

次に、リモートメソッドのテスト:

nusoap がオブジェクトの配列を渡す

関数 hello() {
$a = new UserInfo();
$a -&g t;ユーザー名 = ジェイペイ;
$a->シーケンス= 1928388199 ;
$b = newUserInfo();
$b->UserName = "cnblogs";
$b-> シーケンス= 83910021;
return array($a, $b);
}

nusoap がオブジェクトの配列を渡す


一般的な nuSOAP プログラムは次のとおりです: (プロセス全体はその変更です)

nusoap がオブジェクトの配列を渡す

$soap =newsoap_server() ;
// UTF-8 を使用します$soap->soap_defencoding = 'UTF-8';
$石鹸-> decode_utf8 =false;
// jaypei.cnblogs.com$soap->を想定して、WSDL名前空間を設定する必要があります。 configureWSDL(' jaypei.cnblogs ... > ;登録('こんにちは');$soap
->サービス($ HTTP_RAW_POST_DATA); 変換プロセス
まず、次のようにUserInfoの複合型を登録します: (これは以前に書きました)

$soap->wsdl->addComplexType(
)
'complexType',
配列 ( ) 'ユーザー名
'
=>配列('名前
'=> , '
タイプ
' =>'
xsd:string'
)
, '=>配列( ' 名前'= >'シーケンス','type' =>'xsd:int ') ); ', array(),array('return'=>'tns:UserInfo'));
リストを返したい場合は、戻り時に型を変更する必要があります。最初に、次のように、string や int などの基本型を返すリスト メソッドを見つけました:
$soap->register('hello', array(), array('return'=>'SOAP-ENC:配列') ); このメソッドがカスタム複合型で使用される場合、型は次のようになります: xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="object[2]"object is not What私たちが望んでいます。そこで、オンラインで関連情報を検索したところ、次のメソッドを見つけました: $soap->register('hello', array(), array('return'=>'tns:UserInfoArray') );ここでカスタマイズする必要があります。次のように tns:UserInfoArray の配列タイプを定義して追加します。 ' UserInfoArray' , ' SOAP-ENC:Array',
array

()nusoap がオブジェクトの配列を渡す,

)


'

tns:UserInfo

'

); この時点でコード部分は完了しましたが、nuSOAP は呼び出し時にエラーを報告しました:

キャッチ可能な致命的なエラー:クラス UserInfo のオブジェクトを ...nusoapnusoap.php の行 6002 で文字列に変換できませんでした

そこで、nusoap.php の行 6002 を見つけて、UserInfo が文字列に変換される理由を確認してください:

$this->debug("serializing array element: $k, $v of type: $typeDef[arrayType]");

コードのほとんどを読みませんでしたが、明らかに単なるデバッグ コードであり、実用的な効果はありません。したがって、それをコメントアウトして呼び出しを続けてください。OK!合格し、すべてがうまくいきました。

注: このエラーが、私の使用方法が本来の設計に反しているためなのか、nuSOAP 自体のバグによるものなのかはわかりません。いくつかのアプリケーションを繰り返しリストし、問題がなければ成功とみなされます。間違いがありましたので修正してください。

以上、nusoap で渡されるオブジェクト配列を内容も含めて紹介しましたが、PHP チュートリアルに興味のある方の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。