API - jeden produkt vložit jde, více ne - mazání curl_init?
Zdravím, mám tento script, který mi funguje. Každopádně funguje vždy jen na 1. produktu, u druhého a každého dalšího produktu to vypíše:
"
}
Warning: curl_exec() expects parameter 1 to be resource, null given in D:\xampp\htdocs\stopkovefrezy\api-add-products.php on line 67
Warning: curl_error() expects parameter 1 to be resource, null given in D:\xampp\htdocs\stopkovefrezy\api-add-products.php on line 68
Warning: curl_close() expects parameter 1 to be resource, null given in D:\xampp\htdocs\stopkovefrezy\api-add-products.php on line 70
Notice: Trying to get property 'token' of non-object in D:\xampp\htdocs\stopkovefrezy\api-add-products.php on line 76
Notice: Trying to get property 'token' of non-object in D:\xampp\htdocs\stopkovefrezy\api-add-products.php on line 91
string(46) "{"message":"Authorization header is required"}"
Chyba bude v proměnné $curl, protože pokud $curl přejmenuji třeba na $curl1, funguje to. Kde je problém? Co je tu špatně? Chybné řádky jsou označeny "// CHYBA". Moc nevím, co mám dělat dál, i když jsem se to snažil hledat.
api-add-products.php
<?php
// hlavicka
include "include/help-functions.php";
include_once "include/login.php";
// vkladane produkty z
include "get-csv-to-array/dgm.php"; // DGM frezovaci hlavy
// include "get-csv-to-array/dte.php" // DTE frezovaci hlavy
//vkladani produktu
$i = 0;
foreach (array_slice($products, 1) as $a) {
if ($i >= 3) {
break;
}
$i++;
pr($a);
$name = $a['name'];
if ($tocivost == "S") {
$img = "symetricke-zuby-freza.png";
}
else {
$img = "asymetricke-zuby-freza.png";
}
$produkt = array(
"name" => $name,
"secondName" => $name,
"description" => $a['description'],
"picture" => $img,
"news" => false,
"secondPrice" => str_replace(",", ".", $a['cena_na_web']), // cenikova cena
"price" => str_replace(",", ".", $a['cena_bez_dph']), // cena bez dph
/*"Použití na materiál" => "Masiv",
"Průměr řezného nástroje" => $a['prumer_nastroje'], // JAK VLOŽIT TENTO PARAMETR TŘEBA?
"Typ" => "$a['typ'],
"něco" => "něco",*/
"visibleOnHomepage" => false,
"productNumber" => $a['kod'],
"previewPicture" => $img,
"bestselling" => false,
"discounted" => false,
"measuringUnit" => "",
"discussionEnabled" => false,
"freeShippingEnabled" => false,
"bazaarEnabled" => false,
"amountInStock" => 10,
"availabilityId" => 1,
"weight" => 0,
"unsaleable" => false,
"hidden" => false,
"feedProductName" => $name,
"feedPicture" => $img,
"pictureMagnifier" => $img,
"vatLevel" => 1,
"categories" => [ // DOKONČIT!
"10-0-0-0", // pred vkladanim je nutne mit kategorie vytvorene!
[
"code" => "10-474-0-0",
"primary" => true
]
]
);
$produkt = json_encode($produkt);
// vlozeni jednoho produktu
$response = curl_exec($curl); // CHYBA
$err = curl_error($curl); // CHYBA
curl_close($curl); // CHYBA
if ($err) {
echo "cURL Error #:" . $err;
} else {
$jsonResponse = json_decode($response);
$token = $jsonResponse->token; // CHYBA
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://$apiServer/product",
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_POST => TRUE,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "$produkt",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $jsonResponse->token", // CHYBA
"X-Wa-api-token: $apiKey"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
var_dump($response);
}
$response = null;
$err = null;
$curl = null;
$produkt = null;
}
?>
login.php
<?php
// prihlaseni
$apiServer = '';
$apiKey = '';
$username = '';
$password = '';
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://$apiServer/login",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\n \"username\": \"$username\",\n \"password\": \"$password\"\n}",
CURLOPT_HTTPHEADER => array(
"X-Wa-api-token: $apiKey",
),
));
?>
Předem děkuji za odpovědi! ;)
Chybě se nesmíš divit, když tam $curl zavíráš a pak se snažíš volat znovu :) ` curl_close($curl);`
Z `include_once "include/login.php";` udělej raději funkci něco jako
```
function createCurlConnection(){}
```
Spojil jsem rady odsud a z jakpsatweb a zatím mi to funguje takto:
Vše ještě budu upravovat, až to bude kompletní, přidám sem i svoji konečnou verzi. Třeba to někdy někomu z webarealu pomůže.
help-function.php (jen ta funkce)
a api-add-products.php