API Fehler beim Anlegen von Artikeln

Hallo zusammen, leider bekomme ich folgende Fehlermeldung, wenn ich per API ein Artikel anlegen möchte:

HTTP: 400
No Success
Validation error
tax: This value should not be blank.
mainDetail.number: This value should not be blank.
name: This value should not be blank.

Meiner Meinung nach sieht das Array richtig aus. Könnt ihr mir helfen um den Fehler zu beheben?
 

Array
(
    [name] => ELBA Ordnungsmappe chic 400001999 DIN A4 7Fächer Karton anthrazit
    [taxId] => 1
    [mainDetail] => Array
        (
            [number] => 127029691
            [additionaltext] => 
            [supplierNumber] => 400001999
            [ean] => 4002030047709
            [attribute] => Array
                (
                    [attr5] => 
                    [attr6] => 
                )

            [prices] => Array
                (
                    [0] => Array
                        (
                            [price] => 6,89
                            [pseudoprice] => 0
                            [baseprice] => 0
                        )

                )

            [inStock] => 10000
            [shippingFree] => 
            [shippingTime] => 1 - 3
            [releaseDate] => 19.02.2018
            [minPurchase] => 
            [maxPurchase] => 
            [purchaseSteps] => 
            [purchaseUnit] => 1
            [referenceUnit] => 1
            [packUnit] => Stück
            [unitId] => 9
        )

    [categories] => Array
        (
            [0] => Array
                (
                    [id] => 10811
                )

        )

    [supplier] => Array
        (
            [name] => HAMELIN PAPERBRANDS
        )

    [active] => 1
    [description] => Im attraktiven, modernen Punkt-Design. Vorderdeckel mit Tabaufdruck und Feineinteilungen zum Beschriften.
    [descriptionLong] => Im attraktiven, modernen Punkt-Design. Vorderdeckel mit Tabaufdruck und Feineinteilungen zum Beschriften.
Anzahl der Fächer: 7 Fächer
Art des Verschlusses: Gummizugverschluss
Ausführung der Tabe: blanko
Beschriftungsfeld vorhanden: Ja
Farbe: anthrazit
Grammatur: 450 g/m²
Maße: 25 x 31,5 cm (B x H)
Material des Einbandes: Karton
Verwendung für Papierformat: DIN A4

    [keywords] => Unterschriftsmappen, Unterschriftenmappen, Sammelmappen, Registermappen, Projektmappen, Organizer, Ordnungsmappen, Mappen, Fächermappen, Eckspannmappen, Eckspannermappen, Eckspanner, Dokumententaschen, Dokumentenmappen, Archivmappen, Aktenmappen, Ablegemappen
    [added] => 19.02.2018
    [changed] => 19.02.2018
)

 

Hallo,

wenn ich Artikel auf folgendem Wege anlege, funktioniert alles. Hast du versucht die Klammern um die Keys wegzulassen und diese als strings hinzuschreiben?

 

$articleData = array(
    ‘name’ => ‘Artikelname’,
    ‘tax’ => 7,
    ‘supplier’ => ‘SUPPLIERNAME’,
    ‘lastStock’ => false,
    ‘notification’ => false,
    ‘mainDetail’ => array(
        ‘number’ => 12345,
        ‘active’ => true,
        ‘inStock’ => 123,
        ‘releaseDate’ => datum,
        
         usw…

      
    ),
);

 

VG

Vielen Dank für deine Antwort. Ich baue mir mein Array auch so zusammen. Das ist lediglich die Ausgabe des Arrays (siehe den echo Bereich). Mein Array baue ich wie folgt auf:

 

$array = array ('name' => $row['name'],
				'taxId' => $tax,			
				'mainDetail' => array(
					'number' => $row['ordernumber'],
					'additionaltext' => $row['additionaltext'],
					'supplierNumber' => $row['suppliernumber'],
					'ean' => $row['ean'],
					'attribute' => array(
						'attr5' => $row['attr5'],
						'attr6' => $row['attr6']
					),
					'prices' => array(
						array('price' => $row['price'],
						'pseudoprice' => $row['pseuroprice'],
						'baseprice' => $row['baseprice'])
					),
					'inStock' => $row['instock'],
					'shippingFree' => $row['shippingfree'],
					'shippingTime' => $row['shippingtime'],
					'releaseDate' => $row['releasedate'],
					'minPurchase' => $row['minpurchase'],
					'maxPurchase' => $row['maxpurchase'],
					'purchaseSteps' => $row['purchasesteps'],
					'purchaseUnit' => $row['purchaseunit'],
					'referenceUnit' => $row['referenceunit'],					
					'packUnit' => $row['packunit'],
					'unitId' => $row['unitID']
				),
				'categories' => array(
					array(
						'id' => $row['categories']
					)
				),
				'supplier' => array(
					'name' => $row['supplier']
				),
				'active' => $row['active'],
				'description' => $row['description'],
				'descriptionLong' => $row['description_long'],
				'keywords' => $row['keywords'],
				'added' => $row['added'],
				'changed' => $row['changed']				
			);


echo "";
print_r($array);
echo "";

$client->post('articles', $array);

Ichi hole zuvor die Daten aus einer MySQL Datenbank und itteriere die Datensätze um diese nach und nach abzuspeichern.

Ich konnte es bereits darauf reduzieren, dass wenn ich statt $row[‚name‘] einfach einen string à la ‚test‘ reinschreibe, dass es dann klappt. Für mich ergibt das aber null Sinn. ich habe auch schon $row[‚name‘] in eine Variable $name geschrieben und dann statt $row[‚name‘] „$name“ gemacht, um zu zeigen dass es ein String ist. Es tuts aber trotzdem nicht…

Kann es was mit dem Umlauten zutun haben?

Hast du probiert den Array in minimaler form und ohne die Werte aus $row sondern harte testdaten abzuschicken?

Ich habe das ausprobiert. Es hatte nicht funktioniert. Dann habe ich noch was weiteres ausprobiert. Als ich utf8_encode($row[‚name‘]) gemacht habe, hat es mit der kürzesten Schreibweise funktioniert (Name, tax, DetailNUmber). Mit der langen (oben dargestellt) funktioniert es nicht. Teste jetzt mal jetzt alle wo Texte drin sind es in UTF8 zu encoden.

 

edit: Letztendlich liegt es am Encoding… Es muss alles möglich was Text enthält per utf8_encode() codiert werden. Jetzt tut es. Sogar als andere Felder bspw. die description nicht utf8 encodiert war, die Anderen schon, kam die ursprüngliche Fehlermeldung. Da muss wohl was an der Fehlermeldung gemacht werden :wink:

Das stimmt, ich kämpfe gerade auch an einer anderen front wo die Fehlermeldung gerne etwas verständlicher hätte sein können. Aber seis drum, schön dass es funktioniert !!!