Клуб API Карт

400 Bad Request

Пост в архиве.

В чем может быть проблема?

Обращаюсь на http://geocode-maps.yandex.ru/1.x/ через cUrl, получаю в ответ Bad Request, обращаюсь с браузера все отлично.

При выполнении этого кода с работы, а не из дам(В обоих случаях локальный сервер), все отлично.

Как решить эту проблему?

4 комментария
Sergey Konstantinov
28 января 2016, 04:08
Вероятно, нужно заурлэнкодить параметры в урле

urlencode и так делаю... Еще раз.... с работы все работает тип-топ

выложи полный код вызова curl который у тебя фейлится

        $arrParameters = array(
            'url' => 'http://geocode-maps.yandex.ru/1.x/?'.'geocode='.$strLocation.'&format=json&key='.self::KEY,
            'method' => 'get'
            );

 

        if ( !isset($arrParameters['header']) || !is_array($arrParameters['header'])) {
            $arrParameters['header'] = array();
        }

        if ( !isset($arrParameters['parameters']) ) {
            $arrParameters['parameters'] = '';
        }


        $arrParameters['server'] = parse_url($arrParameters['url']);

        if ( !isset($arrParameters['server']['port']) ) {
            $arrParameters['server']['port'] = ($arrParameters['server']['scheme'] == 'https') ? 443 : 80;
        }

        if ( !isset($arrParameters['server']['path']) ) {
            $arrParameters['server']['path'] = '/';
        }

 

        $hCurl = curl_init($arrParameters['server']['scheme'] . '://' . $arrParameters['server']['host'] . $arrParameters['server']['path'] . (isset($arrParameters['server']['query']) ? '?' . $arrParameters['server']['query'] : ''));

        $arrCurlOptions = array(
            CURLOPT_PORT => $arrParameters['server']['port'],
            CURLOPT_HEADER => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FORBID_REUSE => true,
            CURLOPT_FRESH_CONNECT => true,
            CURLOPT_FOLLOWLOCATION => false
            );

        if ( !empty($arrParameters['header']) ) {
            $arrCurlOptions[CURLOPT_HTTPHEADER] = $arrParameters['header'];
        }

        if ( !empty($arrParameters['certificate']) ) {
            $arrCurlOptions[CURLOPT_SSLCERT] = $arrParameters['certificate'];
        }

        curl_setopt_array($hCurl, $arrCurlOptions);
        $strResult = curl_exec($hCurl);

        $nHttpCode = curl_getinfo($hCurl, CURLINFO_HTTP_CODE);

        curl_close($hCurl);

        list($strResultHeaders, $strResultBody) = explode("\r\n\r\n", $strResult, 2);