У меня есть следующая команда, которая отлично работает в командной строке,
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);