XCube_Service may have to define the specific Exeption
class. And, SOAP may convert it to soap_fault when it is
outer service. But, it needs some time to consider it.
This issue is moved to sf.net
[ 1709862 ] <sf.jp> service function can't return faultcode
http://sourceforge.net/tracker/index.php?func=detail&aid=1709862&group_id=159211&atid=943471
L120 - 127
ShadeSoap_NusoapServer::invoke_method()
で対応する service 関数を読んだ後に
if (is_array($retValue)) {
$retValue = $this->_encodeUTF8($retValue, $root-
>mLanguageManager);
}
else {
$retValue = $root->mLanguageManager->encodeUTF8
($retValue);
}
と encode 処理をかけちゃうために soap_fault くらすを返
しても文字列に変換されちゃうため期待する反応が返ってこ
ないです
if(is_object($retValue) && get_class($retValue)
== 'soap_fault')
{
$retValue->faultcode = $root->mLanguageManager-
>encodeUTF8($retValue->faultcode);
$retValue->faultactor = $root->mLanguageManager-
>encodeUTF8($retValue->faultactor);
$retValue->faultstring = $root->mLanguageManager-
>encodeUTF8($retValue->faultstring);
$retValue->faultdetail = $root->mLanguageManager-
>encodeUTF8($retValue->faultdetail);
}
こんなかんじの処理を追加すればだいじょーぶかなぁ?
あとこれはばぐなのか仕様なのかびみょーだけど,service
関数の引数が内部 encoding に変換されず UTF のまま飛んで
きてるみたいです