2016-04-06 9 views
3

私はExact OnlineのAPIに苦労しています。 サーバーの情報を取得するために、このサンプルコードを使用する:ExactOnline APIとOData

上記
$response = $exactApi->sendRequest("crm/Accounts?$filter=substringof('test', Name) eq true', 'get'); 

は、不正な要求を返します。誰でもこれを修正する手掛かりを得た?

機能の要求を送信するには、 ':

public function sendRequest($url, $method, $payload = NULL) 
{ 
    if ($payload && !is_array($payload)) { 
     throw new ErrorException('Payload is not valid.'); 
    } 

    if (!$accessToken = $this->initAccessToken()) { 
     throw new ErrorException('Access token was not initialized'); 
    } 

    $requestUrl = $this->getRequestUrl($url, array(
     'access_token' => $accessToken 
    )); 

    // Base cURL option 
    $curlOpt = array(); 
    $curlOpt[CURLOPT_URL] = $requestUrl; 
    $curlOpt[CURLOPT_RETURNTRANSFER] = TRUE; 
    $curlOpt[CURLOPT_SSL_VERIFYPEER] = TRUE; 
    $curlOpt[CURLOPT_HEADER] = false; 

    if ($method == self::METHOD_POST) { 

     $curlOpt[CURLOPT_HTTPHEADER] = array(
      'Content-Type:application/json', 
      'access_token:' . $accessToken, 
      'Content-length: ' . strlen(json_encode($payload)) 
     ); 
     $curlOpt[CURLOPT_POSTFIELDS] = json_encode($payload); 
     $curlOpt[CURLOPT_CUSTOMREQUEST] = strtoupper($method); 
    } 
    $curlOpt[CURLOPT_ENCODING] = ''; 
    $curlHandle = curl_init(); 
    curl_setopt_array($curlHandle, $curlOpt); 

    return curl_exec($curlHandle); 
} 

答えて

1

これをテストしました。

crm/Accounts?$select=Name&$filter=substringof('Lennert',Name) : OK 

crm/Accounts?$select=Name&$filter=substringof('Lennert', Name) eq true : NOK, error 400 

crm/Accounts?\$select=Name&$filter=substringof(Name, 'Lennert') eq true : NOK, error 400 

最初のオプションは動作しますが、Exact Onlineが使用するOData v2仕様ではありません。このために何ができるかを見るための開発について議論されます。

+0

これは今後の改善として登録されています。その間、オプション1を使用してください。 –