Hallo Profis,
ich habe ein Problem bei einem kleinen PHP Projekt. Ich schreibe aktuell die Funktionen für ein Webfrontend über welches ich die REST API einer Software ansteuern möchte. Erst logge ich mich mit CURL "in der Software ein" und speicher einen cookie. In einem zweiten Schritt möchte ich "in der Software" als Authorisierter User Projekte anlegen. Der Hersteller gibt mir folgendes vor:
curl -v \
-b cookie.txt \
-X POST \
-H "Content-Type: application/json" \
-d '{"name": "myProjectName", "description": "123456789"}' \
http://localhost/projekt.json
Wenn ich diesen Curlbefehl (nach dem Login über Curl) über das Terminal ausführe, funktioniert alles wie gewünscht. Über PHP bekomme ich das aber nicht hin.
PS: Habe den Code geändert:
Ich sitze an dem Problem jetzt schon einige Zeit und wage jetzt den Schritt im Forum nachzufragen. Vielleicht hat ja einer von euch ne gute Idee.
Lieben Gruß aus Köln
ich habe ein Problem bei einem kleinen PHP Projekt. Ich schreibe aktuell die Funktionen für ein Webfrontend über welches ich die REST API einer Software ansteuern möchte. Erst logge ich mich mit CURL "in der Software ein" und speicher einen cookie. In einem zweiten Schritt möchte ich "in der Software" als Authorisierter User Projekte anlegen. Der Hersteller gibt mir folgendes vor:
curl -v \
-b cookie.txt \
-X POST \
-H "Content-Type: application/json" \
-d '{"name": "myProjectName", "description": "123456789"}' \
http://localhost/projekt.json
Wenn ich diesen Curlbefehl (nach dem Login über Curl) über das Terminal ausführe, funktioniert alles wie gewünscht. Über PHP bekomme ich das aber nicht hin.
PS: Habe den Code geändert:
PHP-Code:
////////////////////////////////////////////////////////////////////
// Create Production
////////////////////////////////////////////////////////////////////
$url = "http://testserver/projekt.json";
$ch = curl_init();
// read and edit Cookie from txt
$handle = fopen($cookie, 'r');
$contents = fread($handle, filesize($cookie));
fclose($handle);
$token = str_replace("\t", '=', substr($contents, strpos($contents, 'login-token')));
//curl options
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Accepts all CAs
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, POST);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_CRLF, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
//Post data as json
$data = json_encode(array(
'name' => 'Namederproduction',
'description' => 'Beschreibungderproduction'
));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
//header
$header = array('Cookie: '.$token,
'Content-Length: '.strlen($data),
'Content-Type: application/json;charset=UTF-8',
'Accept: application/json;charset=UTF-8');
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$output = curl_exec($ch);
curl_close($ch);
return $output;
Lieben Gruß aus Köln
Kommentar