API Post Fehler 400

Hallo zusammen,

ich lade per API Artikel von einem Shop zum anderen.
Dabei bekomme ich bei manchen Artikeln diesen Fehler:

 

HTTP: 400

No Success

Validation error

Wie bekomme ich besser heraus woran das liegt?

Gruß,
Hagen
 

Könntest Du ein kleines Beispiel mit dem API-Client (https://developers.shopware.com/developers-guide/rest-api/?_ga=1.147481911.1425128247.1470816323#using-the-rest-api-in-your-own-application) bauen bei dem der Fehler auftritt? Dann könnte ich versuchen das Problem zu analysieren.

Was meinst du mit Beispiel?

So poste ich mit der API:

 

$a = $client->post('articles', array(
    'supplierId' => $hersteller_id,
    'taxId' => 1,
    'name' => $product_name,
    'descriptionLong' => $beschreibung,
	'added' => $datum,
    'active' => $aktiv,
    'pseudoSales' => $pseudoSales,
    'keywords' => $keywords,
	'metaTitle' => $product_name,
    'changed' => $datum,
    'crossBundleLook' => 0,
    'mode' => 0,
    'mainDetail' => array (
        'number' => $artikelnummer,
        'kind' => 1,
        'active' => $aktiv,
        'inStock' => $lagermenge,
        'stockMin' => 0,
        'weight' => 0.000,
        'ean' => $ean,
        'purchasePrice' => 0,
        'position' => 0,
        'minPurchase' => 1,
        'releaseDate' => $datum,
        'shippingTime' => $versandzeit,
        'prices' => array (
             '0' => array (
             'customerGroupKey' => 'EK',
             'from' => 1,
             'to' => 'beliebig',
             'price' => $preis,
             'customerGroup' => array (
                        'id' => 1,
                        'key' => 'EK',
                        'name' => 'Shopkunden',
                        'tax' => 1,
                        'taxInput' => 1,
                        'discount' => 0,
                        'minimumOrder' => 0,
                        'minimumOrderSurcharge' => 0 ) ) ) ),
	'images' => array(
		array('link' => $bilderlink ) ),
    'tax' => array (
        'id' => 1,
        'tax' => '19.00',
        'name' => '19%' ),
    'supplier' => array (
        'id' => $hersteller_id,
        'name' => $hersteller_name,
        'changed' => $datum ),
    'categories' => array (
            '0' => array (
                    'id' => 8,
                    'name' => 'Ersatzteile' ) )
));

Und bei den meisten Sachen geht es auch.

 

Spannend wären die Daten eines Artikels bei dem die Übertragung fehl schlägt. Möglicherweise ist in dem Fall eines der Felder null das gefüllt sein müsste. Wenn Du weisst welche Artikel fehl schlagen könntest Du einen Requestmit den entsprechenden minimalen Werten versuchen (REST API - Examples using the article resource). Wenn das funktioniert, dann langsam die Menge der Daten erhöhen bis der Fehler eingegrenzt wird. Auch könntest Du durchgehen welche Felder geprüft werden, dies geschieht in engine/Shopware/Components/Api/Resource/Article.php.

Was mir im Vergleich zwischen Deinem Code und Beispiel in der Doku ad hoc auffällt:

  • Das prices -Array ist in der Doku ein Array von Objekten, in Deinem Code hat es einen assoziativen Key.
  • Der Key des categories -Array ist in der Doku die ID der jeweiligen Kategorie, hier scheint er ein hochzählender Index zu sein.

Wie gesagt: Das müssen nicht dir Gründe für das Problem sein, müsste aber mal geprüft werden.

Hier einmal fehlgeschlagene Daten:
 

supplierId: 35
name: Trag-/Führungsgelenk LEMFÖRDER 10155 03 EAN: 4047437007192
descriptionLong:
Merkmale:

Einbauort: Vorderachse
Einbauort: oben
Einbauort: beidseitig
Dicke/Stärke: 20 mm


added: 2016-12-08T09:13:15+0100
active: 0
pseudoSales: 0
keywords: VW 701407187 VW 701407187A VW 701407187B LEMFÖRDER 89003803 LEMFÖRDER 032299034617 QUINTON HAZELL QSJ1303S QUINTON HAZELL QSJ1303F MOOG VOBJ7192 MEYLE 1160107192 KOIVUNEN OY 021VW61 TRW JBJ268 ALFRED HEYD V5292 HAVAM XB2063 JAPCAR 265552 LEMFÖRDER1015503
metaTitle: Trag-/Führungsgelenk LEMFÖRDER 10155 03 EAN: 4047437007192
changed: 2016-12-08T09:13:15+0100
number: FT-LEMFÖRDER1015503
active: 0
inStock: 5
ean: 4047437007192
releaseDate: 2016-12-08T09:13:15+0100
shippingTime: 2-3
price: 28.989947
arraylink: http://www.xxx.com/shop/images/lemfrder/lemfrder1015503.jpg
id: 35
name: LEMFÖRDER
changed: 2016-12-08T09:13:15+0100

Und hier einmal erfolgreiche Daten:
 

supplierId: 35
name: Trag-/Führungsgelenk LEMFÖRDER 10155 03 EAN: 4047437007192
descriptionLong:
Merkmale:

Einbauort: Vorderachse
Einbauort: oben
Einbauort: beidseitig
Dicke/Stärke: 20 mm


added: 2016-12-08T09:13:15+0100
active: 0
pseudoSales: 0
keywords: VW 701407187 VW 701407187A VW 701407187B LEMFÖRDER 89003803 LEMFÖRDER 032299034617 QUINTON HAZELL QSJ1303S QUINTON HAZELL QSJ1303F MOOG VOBJ7192 MEYLE 1160107192 KOIVUNEN OY 021VW61 TRW JBJ268 ALFRED HEYD V5292 HAVAM XB2063 JAPCAR 265552 LEMFÖRDER1015503
metaTitle: Trag-/Führungsgelenk LEMFÖRDER 10155 03 EAN: 4047437007192
changed: 2016-12-08T09:13:15+0100
number: FT-LEMFÖRDER1015503
active: 0
inStock: 5
ean: 4047437007192
releaseDate: 2016-12-08T09:13:15+0100
shippingTime: 2-3
price: 28.989947
arraylink: http://www.xxx.com/shop/images/lemfrder/lemfrder1015503.jpg
id: 35
name: LEMFÖRDER
changed: 2016-12-08T09:13:15+0100

 

Hmm, es scheint nun zu funktionieren.
Ich lasse den Preis nun auf zweistellig hinter dem Komma runden.
Komisch nur das es bei anderen Artikeln funktioniert hat.