3

我正在努力使用 Exact Online 的 API。使用此示例代码检索服务器的信息:

$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);
}
4

1 回答 1

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 规范。将与开发人员讨论,看看可以为此做些什么。

于 2016-04-07T09:16:47.380 回答