Also mein code ist wie folgt
class ApiClient
{
const METHOD_GET = 'GET';
const METHOD_PUT = 'PUT';
const METHOD_POST = 'POST';
const METHOD_DELETE = 'DELETE';
protected $validMethods = [
self::METHOD_GET,
self::METHOD_PUT,
self::METHOD_POST,
self::METHOD_DELETE,
];
protected $apiUrl;
protected $cURL;
public function __construct($apiUrl, $username, $apiKey)
{
$this->apiUrl = rtrim($apiUrl, '/') . '/';
//Initializes the cURL instance
$this->cURL = curl_init();
curl_setopt($this->cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($this->cURL, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($this->cURL, CURLOPT_USERAGENT, 'Shopware ApiClient');
curl_setopt($this->cURL, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($this->cURL, CURLOPT_USERPWD, $username . ':' . $apiKey);
curl_setopt(
$this->cURL,
CURLOPT_HTTPHEADER,
['Content-Type: application/json; charset=utf-8']
);
}
public function call($url, $method = self::METHOD_GET, $data = [], $params = [])
{
if (!in_array($method, $this->validMethods)) {
throw new Exception('Invalid HTTP-Methode: ' . $method);
}
$queryString = '';
if (!empty($params)) {
$queryString = http_build_query($params);
}
$url = rtrim($url, '?') . '?';
$url = $this->apiUrl . $url . $queryString;
$dataString = json_encode($data);
curl_setopt($this->cURL, CURLOPT_URL, $url);
curl_setopt($this->cURL, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($this->cURL, CURLOPT_POSTFIELDS, $dataString);
$result = curl_exec($this->cURL);
$httpCode = curl_getinfo($this->cURL, CURLINFO_HTTP_CODE);
return $this->prepareResponse($result, $httpCode);
}
public function get($url, $params = [])
{
return $this->call($url, self::METHOD_GET, [], $params);
}
public function post($url, $data = [], $params = [])
{
return $this->call($url, self::METHOD_POST, $data, $params);
}
public function put($url, $data = [], $params = [])
{
return $this->call($url, self::METHOD_PUT, $data, $params);
}
public function delete($url, $params = [])
{
return $this->call($url, self::METHOD_DELETE, [], $params);
}
protected function prepareResponse($result, $httpCode)
{
echo "HTTP: $httpCode";
if (null === $decodedResult = json_decode($result, true)) {
$jsonErrors = [
JSON_ERROR_NONE => 'No error occurred',
JSON_ERROR_DEPTH => 'The maximum stack depth has been reached',
JSON_ERROR_CTRL_CHAR => 'Control character issue, maybe wrong encoded',
JSON_ERROR_SYNTAX => 'Syntaxerror',
];
echo 'Could not decode json';
echo 'json_last_error: ' . $jsonErrors[json_last_error()];
echo 'Raw:';
echo '' . print_r($result, true) . '';
return;
}
if (!isset($decodedResult['success'])) {
echo 'Invalid Response';
return;
}
if (!$decodedResult['success']) {
echo 'No Success';
echo '' . $decodedResult['message'] . '';
if (array_key_exists('errors', $decodedResult) && is_array($decodedResult['errors'])) {
echo '' . join('', $decodedResult['errors']) . '';
}
return;
}
echo 'Success';
if (isset($decodedResult['data'])) {
echo '' . print_r($decodedResult['data'], true) . '';
}
return $decodedResult;
}
}
$client = new ApiClient(
//URL of shopware REST server
'https://www.xxxx.de/api',
//Username
'xxxx',
//User's API-Key
'xxxx'
);
$client->get('articles/570');
echo "";
var_dump($client);
wenn ich die shopid übergebe bleibt der fehler.
HTTP: 404
No Success
Resource not found
object(ApiClient)#1 (3) {
["validMethods":protected]=>
array(4) {
[0]=>
string(3) "GET"
[1]=>
string(3) "PUT"
[2]=>
string(4) "POST"
[3]=>
string(6) "DELETE"
}
["apiUrl":protected]=>
string(41) "https://www.xxxx.de/api/articles/"
["cURL":protected]=>
resource(2) of type (curl)
}