繁体   English   中英

在提出要求后,CURLOPT_POSTFIELDS出现PHP卷曲问题

[英]Php Curl issue with CURLOPT_POSTFIELDS on put request

使用PHP 5.5.13和curl 7.36.0测试我的应用程序,此请求成功完成:

public static function httpPut($url)
{
    $query = self::concatUrl($_POST);

    $ch = curl_init();

    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . self::getCookiesPath());
    curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . self::getCookiesPath());
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 400);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("ipAddress: " . $_SERVER['REMOTE_ADDR']));

    $output = curl_exec($ch);

    if(curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200 && curl_getinfo($ch, CURLINFO_HTTP_CODE) != 201)
    {
        throw new Exception($output, curl_getinfo($ch, CURLINFO_HTTP_CODE));
    }

    curl_close($ch);

    return json_decode($output);
}

但是在服务器上,使用php 5.3.3和curl 7.21.0,我遇到了一个问题:

curl_setopt($ch, CURLOPT_POSTFIELDS, $query);

它只是不发送有关请求的任何数据。 为了获得成功,我需要用$ url连接$ query:

curl_setopt($ch,CURLOPT_URL, $url . " ? " . $query);

知道如何解决吗?

通过做

curl_setopt($ch,CURLOPT_URL, $url . " ? " . $query);

您只是在发出GET请求而不是POST请求。

我不确定self::concatUrl在做什么,但是您确定它为POST请求制作了一个有效的键值对吗?

则您尚未指定数据长度。

请查看以下答案: 如果使用curl_setopt_array设置了CURLOPT_POST,PHP curl会重置内容长度吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM