CURL帖子出错

时间:2012-01-11 10:30:25

标签: curl

使用CURL收到此类错误.. 错误文字:“The page you are looking for cannot be displayed because an invalid method (HTTP verb) was used to attempt access".....

正在使用的网址: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:我在我的localhost(WAMP)上运行它。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

该功能执行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命令,以便你可以直接使用它。

答案 1 :(得分:0)

我使用IIS时出现此问题,我使用静态html页面作为登录页面,默认情况下,Web服务器不允许在.html页面上使用POST或GET动词,我不得不将页面更改为.asp( .php或.aspx也会起作用。)

enter image description here