ошибка с постом CURL - PullRequest
       5

ошибка с постом CURL

0 голосов
/ 11 января 2012

используя CURL, получая такую ​​ошибку

Используемый URL: http://mkash.something.com

Мой код CURL: $ server = parse_url ($ url);

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

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

    if (isset($server['user']) && isset($server['pass'])) {
        $header[] = 'Authorization: Basic ' . base64_encode($server['user'] . ':' . $server['pass']);
    }
    print_r($server);die;
    if (function_exists('curl_init')) {
        $curl = curl_init($server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : ''));
        curl_setopt($curl, CURLOPT_URL, $Url);
        curl_setopt($curl, CURLOPT_PORT, $server['port']);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
        curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters);

        $result = curl_exec($curl);

        curl_close($curl);
    } else {
        exec(escapeshellarg(MODULE_PAYMENT_TEST_PAYPAL_EXPRESS_CURL) . ' -d ' . escapeshellarg($parameters) . ' "' . $server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : '') . '" -P ' . $server['port'] . ' -k', $result);
        $result = implode("\n", $result);
    }

    return $result;

PS: я запускаю это на моем локальном хосте (WAMP). Есть предложения?

Ответы [ 2 ]

1 голос
/ 11 января 2012

Эта функция выполняет POST, вам, вероятно, потребуется выполнить GET.Попробуйте добавить -G в строку exec следующим образом:

        exec(escapeshellarg(MODULE_PAYMENT_TEST_PAYPAL_EXPRESS_CURL) . ' -d ' . escapeshellarg($parameters) . ' "' . $server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : '') . '" -P ' . $server['port'] . ' -k -G', $result);

Это может не сработать, поскольку вы не предоставили достаточно информации о конечной точке, которую используете, посмотрите на API, говоритчто это ожидает?Может стонать, что вы не делаете PUT или DELETE, и в этом случае вам нужно использовать -X.

Если честно, я бы попытался заставить запрос curl работать без функции,Отобразите команду curl, чтобы вы могли играть с ней напрямую.

0 голосов
/ 16 июня 2015

У меня была эта проблема с использованием IIS, я использовал статическую HTML-страницу в качестве целевой страницы, по умолчанию веб-сервер не допускает глагол POST или GET на странице .html, мне пришлось изменить свою страницу на .asp (.php или .aspx тоже будут работать).

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...