1

MindBody(http://www.mindbodyonline.com)に慣れていない方のために、私が働いているヨガスタジオのような健康とウェルネスセンターのための便利な商人処理ツールです。クライアントを追跡し、従業員やあらゆる種類の優れたものを管理できます。しばらくの間、nuSOAPとMindBody SOAPAPIv0.4を使用してレポートを生成しています。クライアントから、更新されたMindBody SOAP API v0.5が必要なレポートを生成するように求められたとき、PHP5のネイティブSOAP用のnuSOAPを削除することにしました。次に、Zend Soapはネイティブ石鹸と同じ速度を提供するだけでなく、他にも多くの利点があると聞いたので、次のコードを作成しました。

<?php
require_once 'Zend/Soap/Client.php';
$sourceCredentials = array('SourceName'=>'****', 'Password'=>"****", 'SiteIDs'=>array('****'));

try {
  $client = new Zend_Soap_Client('https://api.mindbodyonline.com/0_5/ClientService.asmx?WSDL');
  $result = $client->GetClients(array("SourceCredentials"=>$sourceCredentials, "XMLDetail"=>"Basic", "PageSize"=>"10", "CurrentPageIndex"=>"0", "ClientIDs"=>array("100009536")));
  echo $client->getLastRequest();

} catch (SoapFault $s) {
  die('ERROR: [' . $s->faultcode . '] ' . $s->faultstring);
} catch (Exception $e) {
  die('ERROR: ' . $e->getMessage());
}
var_dump($client);
var_dump($result);
?>

何が間違っているのかわかりません。ページはロードとロードを継続しますが、ロードされることはありません。誰かがWSDLまたはAPIDocsを見て、私が欠けているものを教えてくれることを願っています。APIドキュメントへのリンクは次のとおりですhttp://api.mindbodyonline.com/Docこの例ではクライアントサービスを使用しようとしています。

$ result = $ client-> GetClients〜行をコメントアウトすると、ページが読み込まれ、$clientのvar_dumpがこれを返します。

object(Zend_Soap_Client)#1(28){["_encoding:protected"] => string(5) "UTF-8" ["_classmap:protected"] => NULL ["_faultExceptions:protected"] => array(0 ){} ["_soapVersion:protected"] => int(2)["_uri:protected"] => NULL ["_location:protected"] => NULL ["_style:protected"] => NULL ["_use: protected "] => NULL ["_login:protected"]=> NULL ["_password:protected "] => NULL ["_proxy_host:protected "] => NULL ["_proxy_port:protected "] => NULL ["_proxy_login: protected "] => NULL ["_proxy_password:protected "] => NULL ["_local_cert:protected "] => NULL ["_ passphrase:protected "] => NULL ["_compression:protected "] => NULL ["_connection_timeout:protected "] => NULL ["_stream_context:protected "] => NULL ["_features:protected "] => NULL ["_cache_wsdl:protected "] => NULL ["_user_agent:protected "] => NULL [" _wsdl:protected "] => string(58)" https://api.mindbodyonline.com/0_5/ClientService.asmx?WSDL "[" _soapClient:protected "] => NULL [" _lastMethod:protected "] => string (0) "" ["_soapInputHeaders:protected"]=> array(0){} ["_permanentSoapInputHeaders:protected"] => array(0){} ["_soapOutputHeaders:protected"]=> array(0){} }NULL ["_user_agent:protected"] => NULL ["_wsdl:protected"] => string(58) "https://api.mindbodyonline.com/0_5/ClientService.asmx?WSDL" ["_soapClient:protected"] => NULL ["_lastMethod:protected"] => string(0) "" ["_soapInputHeaders:protected"]=> array(0){} ["_permanentSoapInputHeaders:protected"] => array(0){} [" _soapOutputHeaders:protected "] => array(0){}}NULL ["_user_agent:protected"] => NULL ["_wsdl:protected"] => string(58) "https://api.mindbodyonline.com/0_5/ClientService.asmx?WSDL" ["_soapClient:protected"] => NULL ["_lastMethod:protected"] => string(0) "" ["_soapInputHeaders:protected"]=> array(0){} ["_permanentSoapInputHeaders:protected"] => array(0){} [" _soapOutputHeaders:protected "] => array(0){}}protected "] => array(0){} [" _soapOutputHeaders:protected "] => array(0){}}protected "] => array(0){} [" _soapOutputHeaders:protected "] => array(0){}}

値がどうあるべきかわかりませんが、それらのNULLはすべて私には悪いように見えます。$ client-> GetClientsに渡された配列をネストするさまざまな組み合わせを試しました。また、GetClients以外のさまざまな関数にもアクセスしてみました。

4

1 に答える 1

0

たまたまこれをグーグルで調べて、答えが欲しい人なら誰でも大丈夫です。なんらかの理由で、API で機能させるには、ページ ヘッダーにユーザー エージェント文字列を追加する必要があります。このコードを PHP ページの先頭に追加します。

ini_set("user_agent", "FOOBAR");

次に、soap_version を SOAP_1_1 に設定して Zend_Soap_Client を作成する必要があります。送信するパラメータの配列を作成します。次に、必要な関数を呼び出します。この場合、配列を渡します ( "Reqest"=>$params )

$client = new Zend_Soap_Client('https://api.mindbodyonline.com/0_5/ClientService.asmx?WSDL', array("soap_version"=>SOAP_1_1));
$sourceCredentials = array('SourceName'=>'****', 'Password'=>"****", 'SiteIDs'=>array('****'));
$params = array("SourceCredentials"=>$sourceCredentials, "XMLDetail"=>"Basic", "PageSize"=>"10", "CurrentPageIndex"=>"0", "ClientIDs"=>array("123456789","123456789"));
$result = $client->GetClients(array("Request"=>$params));

編集: 詳細については、30 分以内に MINDBODY API を使い始める方法について書いている記事をご覧ください。

于 2012-05-17T02:59:53.983 に答える