Zend_Soap_Client を使用して ASP.net Web サービスと通信しようとしています。これが私のクライアントコールです:
$client = new Zend_Soap_Client(null, array(
'location' => 'http://example.com/service.asmx',
'uri' => 'http://example.com/'
));
$user = new UserDetail();
$result = $client->UserDetails($user);
ただし、これにより常にエラーが発生します。
System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。Service.UserDetails (UserDetail UserDetail) で
いくつかのグーグルは、これが非常に一般的な問題であることを明らかにしました. 最も一般的な解決策は、パラメーターを配列として渡すことであるように思われたので、試しました:
$result = $client->UserDetails(array('UserDetail' => $user));
しかし、これは同じエラーを出しました。また、paramsをstdClassオブジェクトとして渡し、「params」をキーとして配列を別の配列にネストし、その他いくつかのことを試みましたが、エラーは常に同じです。
Web サービス自体の ASP コードがあります。関連するメソッドは次のとおりです。
public Result UserDetails(UserDetail UserDetail) {
[some stuff]
Hashtable ht = new Hashtable();
ht = UserDetail.GenerateData();
}
このエラーは、GenerateData() 呼び出しが原因で発生します。
UserDetails メソッドは、オブジェクトではなくパラメーターとして null を取得していると思いますが、メソッドを呼び出す方法や、これをさらにデバッグする方法がわかりません。私が見つけた Zend_Soap_Client の例の大部分は WSDL を使用しているようですが、このサービスはそうではありません。それが関連しているかどうかはわかりません。どんな助けでも大歓迎です!