簡體   English   中英

使用curl在php中發出POST請求

[英]Make a POST request in php using curl

我有以下在命令行上完美運行的命令,

curl -X POST --header 'Category: network;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";,virtualnetwork; scheme="http://schemas.opennebula.org/occi/infrastructure#";class="mixin";' --header 'X-OCCI-Attribute: occi.core.title="My Network",occi.core.summary="A short summary", opennebula.network.size=256, opennebula.network.address="192.168.0.0",opennebula.network.bridge=virbr0,opennebula.network.public=YES,opennebula.network.type=RANGED' http://localhost:4567/network/

我試圖使用cURL擴展在php中發出相同的請求,如下所示:

    $ch = curl_init("http://localhost:4567/network/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
header('Content-type: text/plain; charset=utf-8');
curl_setopt($ch,CURLOPT_VERBOSE,true);  
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Category : network;scheme="http://schemas.ogf.org/occi/infrastructure#",class="kind"',
        'Category : virtualnetwork; scheme="http://schemas.opennebula.org/occi/infrastructure#";class="mixin"'));

curl_setopt($ch,CURLOPT_HTTPHEADER,array('X-OCCI-Attribut : occi.core.title="Third Network"',
        'X-OCCI-Attribut : occi.core.summary="Test Net"', 
        'X-OCCI-Attribut : opennebula.network.size=256',
        'X-OCCI-Attribut : opennebula.network.address="10.10.10.0"',
        'X-OCCI-Attribut : opennebula.network.bridge=br0',
        'X-OCCI-Attribut : opennebula.network.public=YES',
        'X-OCCI-Attribut : opennebula.network.type=RANGED'
        ) );
 curl_setopt($ch, CURLOPT_POST, 1);
 $response = curl_exec($ch);

該請求失敗,並且服務器上未添加任何內容。

我也嘗試過HTTPRequest,但仍然無法發出請求:

            $arg= array(
        'Category : network;scheme="http://schemas.ogf.org/occi/infrastructure#",class="kind"',
        'Category : virtualnetwork; scheme="http://schemas.opennebula.org/occi/infrastructure#";class="mixin"',
        'X-OCCI-Attribut : occi.core.title="Third Network"',
        'X-OCCI-Attribut : occi.core.summary="Test Net"', 
        'X-OCCI-Attribut : opennebula.network.size=256',
        'X-OCCI-Attribut : opennebula.network.address="10.10.10.0"',
        'X-OCCI-Attribut : opennebula.network.bridge=br0',
        'X-OCCI-Attribut : opennebula.network.public=YES',
        'X-OCCI-Attribut : opennebula.network.type=RANGED'
        ) ;

        $this->httpRequest->addPostFields($arg);

有什么建議么 ??

我根據此鏈接添加了以下行:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); 

並得到:

HTTP/1.1 400 Bad Request
Connection: close
Date: Fri, 29 Jul 2011 09:01:31 GMT
Content-Type: text/plain
Content-Length: 0
Server: OCCI/1.1

我成功了,我只需要更正標題,並刪除

 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); 

正確的標頭是:

    curl_setopt($ch, CURLOPT_HTTPHEADER,array('Category: network;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";,virtualnetwork; scheme="http://schemas.opennebula.org/occi/infrastructure#";class="mixin";',
        'X-OCCI-Attribute: occi.core.title="My Net",occi.core.summary="A netw summary", opennebula.network.size=256, opennebula.network.address="10.0.0.0",opennebula.network.bridge=virbr0,opennebula.network.public=YES,opennebula.network.type=RANGED')); 
 curl_setopt($ch, CURLOPT_POST, 1);
 $response = curl_exec($ch);

使用wireshark調試網絡流。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM