API Fehler / A name is required / Artikel Upload

Hallo Shopware,

Ich habe einen Shop auf einen neuen Server umgezogen. Nun bekomme ich aber immer " A name is required" als Fehlermeldung wenn ich die Artikel über die API hochlade.

api answer : error_retry_article_input

  

Soweit ich lesen kann, habe ich den Wert „name“ im Array. Trotzdem bekomme ich diese Meldung. 

Die Fehlermeldung komplett in Log: core.ERROR: exception ‚Shopware\Components\Api\Exception\CustomValidationException‘ with message ‚A name is required‘ in /var/www/vhosts/******.de/httpdocs/engine/Shopware/Components/Api/Resource/Category.php:275

Fehlermeldungen die wir durch unsere Schnittstelle bekommen: 

INSERT CATEGORY API ERROR.

API: No Success: 1754 A name is required.

Server Log:

-client denied by server configuration: /var/www/vhosts/**********.de/httpdocs/cron.php
-mod_fcgid : stderr: PHP Strict Standards:  Non-static method helper::getMainArticleNumberFromVariante() should not be called statically in -var/www/vhosts/********.de/httpdocs/engine/Shopware/Plugins/Local/Backend/Schnittstelle/Interface/functions/class.helper.php on line 0
-mod_fcgid : ap_pass_brigade failed in handle_request_ipc function
-mod_fcgid : stderr: PHP Fatal error:  Uncaught exception ‚PDOException‘ with message ‚SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction‘ in /var/www/vhosts/********.de/httpdocs/engine/Shopware/Components/Session/PdoSessionHandler.php:409

 

Ich freue mich auf Vorschläge.

Soweit ich lesen kann, habe ich den Wert „name“ im Array.

Das ist jetzt aber keine Aussage ob der Wert auch wirklich übergeben wird. Das musst du selbst überprüfen. Das kann hier auch keiner im Forum sehen :-)  Laut Fehlermeldung kommt der Name nicht an.

Danke :) 

Die Fehlermeldung erscheint auch wenn ich Artikel ohne Kategorie-Daten importieren möchte. ?! Foot-in-Mouth

Wie sieht denn dein Import im Beipiel aus?

Das passiert wenn ich die Artikel mit Post anlegen möchte. 

   public function post($url, $data = array(), $params = array()) {       
        return $this->call($url, self::METHOD_POST, $data, $params);
    }

auch wenn ich hier params einen festen Value gebe, kommt dieser Fehlermeldung. 

Das komische ist das das bei all unseren Kunden funktioniert!

 

Ja das ist die Funktion aus der ApiClient Klasse, aber wie sieht dein Data-Array aus? Im Pmrinzip müsste es ja ungefähr so aussehen:

include 'SW_ApiClient.php';

$SW = new ApiClient( 'URL API', 'Benutzer', 'Passwort' );

$data = Array(
  'name' => 'Name des Artikel',
  'description' => 'kurze Beschreibung',
  'descriptionLong' => 'lange Beschreibung',
  'taxId' => 1, // ID Steuer
  'supplier' => 'Hersteller',
  'priceGroupId' => 1, // Preisgruppe
  'active' => 1, //aktiv
  'categories' => array( array('id' => 123) ), // ID Kategorie
  'metaTitle' => 'Meta Title',
  'mainDetail' => array( 
    'number' => '12456', 
    'inStock' => 1, // Menge
    'minPurchase' => 0, // min Bestellmenge
    'maxPurchase' => 1, // max Bestellmenge
    'supplierNumber' => 12345, // Herstellernummer
    'active' => 1,
    'prices' => array( array( 'customerGroupKey' => 'EK', 'price' => 999.999 ) ),
    'attribute' => array( 
      'attr5' => 'Freitextfeld aatr5',  
      ),
  ),
);

// Kontrolle Array
print_r($data);

$SW->post('articles', $data );

 

1 „Gefällt mir“

So sieht mein Data Array aus:

 

 - Artikelimport:

Array
(
    [KaDIS-Artikelsteuerung] => aktiv
    [Verkaufsplattform] => AGRAR
    [supplier_name] => Sirocco
    [active] => 1
    [tax] => 19
    [mainDetail] => Array
        (
            [number] => 21-823126
            [prices] => Array
                (
                    [0] => Array
                        (
                            [customerGroupKey] => EK
                            [price] => 5.89
                            [pseudoPrice] => 0
                            [basePrice] => 0
                            [from] => 1
                            [to] => beliebig
                        )

                    [1] => Array
                        (
                            [customerGroupKey] => UVP-V
                            [price] => 4.99159663865546
                            [pseudoPrice] => 0
                            [basePrice] => 0
                            [from] => 1
                            [to] => beliebig
                        )

                    [2] => Array
                        (
                            [customerGroupKey] => VK2
                            [price] => 4.46
                            [pseudoPrice] => 0
                            [basePrice] => 0
                            [from] => 1
                            [to] => beliebig
                        )

                    [3] => Array
                        (
                            [customerGroupKey] => VK6
                            [price] => 4.16
                            [pseudoPrice] => 0
                            [basePrice] => 0
                            [from] => 1
                            [to] => beliebig
                        )

                )

            [supplierNumber] => 7091700
            [kind] => 1
            [active] => 1
            [inStock] => 0
            [stockMin] => 2
            [weight] => 0.000
            [width] => 0.000
            [len] => 0.000
            [height] => 0.000
            [ean] => 4024488090007
            [position] => 0
            [minPurchase] => 1
            [purchaseSteps] => 1
            [maxPurchase] => 0
            [purchaseUnit] => 1.0000
            [referenceUnit] => 1.000
            [unit] => Array
                (
                    [unit] => Stück
                    [name] => Stück
                )

            [packUnit] => Stück
            [shippingFree] => 0
            [shippingTime] => 5
            [attribute] => Array
                (
                    [attr4] =>
                    [attr6] => 3568
                    [lighthouseAltOrdernumber] => 21-823126
                    [lighthouseCoolDeliveryArticle] => 0
                    [ConfigurationArticle] => 0
                    [BuildInArticle] => 0
                    [lighthouseArticleDeposit] =>
                    [attr1] =>
                    [attr2] =>
                    [attr3] =>
                    [attr5] =>
                    [attr7] =>
                    [attr8] =>
                    [attr9] =>
                    [attr10] =>
                    [attr11] =>
                    [attr12] =>
                    [attr13] =>
                    [attr14] =>
                    [attr15] =>
                    [attr16] =>
                    [attr17] => 0
                    [attr18] =>
                    [attr19] =>
                    [attr20] =>
                    [lighthouseBookAuthor] =>
                    [lighthouseIsbn] =>
                    [lighthouseEssentialText] =>
                    [lighthouseIngredients] =>
                    [lighthouseTechnicalSpecifications] =>
                    [lighthouseAllergens] =>
                    [lighthouseAltSeolinkname] =>
                    [lighthouseAlcoholVolume] =>
                )

            [ImageAttribute] => Array
                (
                    [Image] => Array
                        (
                            [KadisImageName] => 109577_01.jpg
                            [ShopImageName] => 109577_01.jpg
                        )

                )

            [additionaltext] =>
        )

    [name] => Temperguss T-Stück, 1 1/4 Zoll, dreiseitig mit Innengewinde, Nr. 130
    [metaTitle] => Temperguss T-Stück, 1 1/4 Zoll, dreiseitig mit Innengewinde, Nr. 130
    [descriptionLong] => Das Temperguss-T-Stück ist aus langlebigem und belastbarem
Gusseisen gefertigt und verfügt über ein dreiseitiges Innengewinde.
Temperguss-Fittings zeichnen sich durch ihre hohe
Winkelgenauigkeit und Dichtkraft aus und sind somit bestens eignet für Sanitär-
und Heizungs- und Gasinstallationen, Kälte- und Klimaanlagen, Sprinkler- und
Gaslöschanlagen, Industrie-Anlagenbau und den Maschinenbau.
Technische Daten:

  Material: Temperguss
  Anschluss: Innengewinde
  Maß: 1 1/4 Zoll
  Abgang: 90° Grad
Lieferumfang:

  1x Temperguss T-Stück, 1 1/4 Zoll
IG
    [keywords] => Temperguss, Temperguss-T-Stück, T-Stück, Fittig, Fittings, Nr. 130
    [similar] => Array
        (
            [0] => Array
                (
                    [id] => 713
                    [name] => Temperguss T-Stück, 1/2 Zoll, dreiseitig mit Innengewinde, Nr. 130
                )

            [1] => Array
                (
                    [id] => 714
                    [name] => Temperguss T-Stück, 3/4 Zoll, dreiseitig mit Innengewinde, Nr. 130
                )

            [2] => Array
                (
                    [id] => 5607
                    [name] => Temperguss T-Stück, 1 Zoll, dreiseitig mit Innengewinde, Nr. 130
                )

        )

    [lastStock] => 0
    [notification] => 0
    [translations] => Array
        (
        )

    [supplierId] => 132
    [taxId] => 1
    [related] =>
    [categories] => Array
        (
            [489] => Array
                (
                    [id] => 489
                )

            [1100] => Array
                (
                    [id] => 1100
                )

        )

)

 

 

Sehr komisch, wenn der Name drin steht aber die API wegen dem Name meckert. Kann ich aus der Ferne nicht so beurteilen.

Ja genau. Der Name steht ja da aber die API sagt " A name is required"

[@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski „Moritz Naczenski“)‍ ‍ [@Stephan Pohl](http://forum.shopware.com/profile/2/Stephan Pohl „Stephan Pohl“)‍ ich wäre sehr dankbar wenn mir jemand helfen kann. 

Sieht das hier nur so aus oder sind das keine Strings? Anführungszeichen fehlen?

Das sieht nur hier so aus. wie gesagt die Schnittstelle von uns funktioniert schon bei allen Kunden. erst seit dem Server Umzug bekommen wir hier API Fehler. 

Was kann ich prüfen bzw. testen ? :/ 

Ich habe nach lange Analyse rausgfeunden dass das bei Kategorie Import passiert.

Da wir beim Artikel Import auch die Kategorie Daten übergeben, erscheint die Fehlermeldung auch während ich die Artikel importiere. 

API stellt einfach KEINE KATEGORIEDATEN zur Verfügung. (API GET ERROR)

Klingt ja fast so, als wäre was bei der Datenübernahme schief gelaufen.
Lassen die Kategorien im Backend sich denn verwalten?

Und dann auch mal schauen, ob die Models korrekt generiert werden (var/cache/production_xxx/doctrine/attributes) für die Kategorie.

Ansonsten mal die Foreign Key Reparatur draufschmeißen.

Im Backend lassen sich die Kategorien ohne Probleme ändern. 

Die Models werden auch korrekt generiert. 

Die Foreign Key Reparatur habe ich auch gemacht. Da waren keine kaputte Einträge.  Foot-in-Mouth

Ich habe in alte Tickets von uns folgende Informationen gefunden: 

 Es besteht aus einem „Kombiproblem“ 
Wenn der Server mit den Backendeinstellungen für SSL und „Überall SSL“, sowie in der .htaccess alles auf https geforced wird, kommt es zu diesem Problem. Er scheint bei dem Umleitungen die POST Informationen zu verlieren.

Ich bekomme immer noch 
API: No Success for Article 04-104:

Validation error Fehler [0] -> tax: This value should not be blank.
Fehler [1] -> mainDetail.number: This value should not be blank.
Fehler [2] -> name: This value should not be blank.

obwohl alle Daten da sind. 

 

Aufruf:

$client->put(‚articles/‘.$ArticleID, $xml);

Der Aufbau des Array ist Deckungsgleich. Trotzdem kommt es zu diesem Fehler. Hier scheint er, wie bei den Kategorien die Information innerhalb der API zu verlieren.

 

Können Sie mir vielleicht hier weiterhelfen?

Danke

Hallo @kadis‍,

ich glaube du benutzt das APIClient Code von Shopware.

um deine Probleme zu finden lass uns das Process Step by Step überprüfen.

hier das call Funktioni in Shopware Code:

 

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);
    }

 

kannst du print das Variable $dataString nach

        $dataString = json_encode($data);

und überprüf ob alle Data in deine $data Arrray richtig encoded.

und über das Url wenn es ist HTTPs beim Backend , dann ruf das URL mit HTTPs und wenn nicht nicht.

VG,

Tel.: +49 755 - 183 990 00 | Web: http://enbit.de/

@ahmadsaad‍ Vielen Dank für deine Antwort.

Meine $data Array wird so wie es aussieht richtig encoded.

Die Ausgabe in CLI sieht so aus:

 Array
(
)
dataArray 1
Array
(
    [KaDIS-Artikelsteuerung] => aktiv
    [Verkaufsplattform] => AGRAR
    [supplier_name] => Hausmarke
    [active] => 0
    [tax] => 19
    [mainDetail] => Array
        (
            [number] => 14-092
            [prices] => Array
                (
                    [0] => Array
                        (
                            [customerGroupKey] => UVP-V
                            [price] => 12.5210084033613
                            [pseudoPrice] => 0
                            [basePrice] => 0
                            [from] => 1
                            [to] => beliebig
                        )

                    [1] => Array
                        (
                            [customerGroupKey] => VK2
                            [price] => 9.15
                            [pseudoPrice] => 0
                            [basePrice] => 0
                            [from] => 1
                            [to] => beliebig
                        )

                    [2] => Array
                        (
                            [customerGroupKey] => VK6
                            [price] => 9.15
                            [pseudoPrice] => 0
                            [basePrice] => 0
                            [from] => 1
                            [to] => beliebig
                        )

                )

            [supplierNumber] => 7091088
            [kind] => 1
            [active] => 0
            [inStock] => 0
            [stockMin] => 0
            [weight] => 0.000
            [width] => 0.000
            [len] => 0.000
            [height] => 0.000
            [ean] => 4038293140925
            [position] => 0
            [minPurchase] => 1
            [purchaseSteps] => 1
            [maxPurchase] => 0
            [purchaseUnit] => 1.0000
            [referenceUnit] => 1.000
            [unit] => Array
                (
                    [unit] => Stück
                    [name] => Stück
                )

            [packUnit] => Stück
            [shippingFree] => 0
            [shippingTime] => 5
            [attribute] => Array
                (
                    [lighthouseAltOrdernumber] => 14-092
                    [lighthouseCoolDeliveryArticle] => 0
                    [ConfigurationArticle] => 0
                    [BuildInArticle] => 0
                    [lighthouseArticleDeposit] =>
                    [attr1] =>
                    [attr2] =>
                    [attr3] =>
                    [attr4] =>
                    [attr5] =>
                    [attr6] =>
                    [attr7] =>
                    [attr8] =>
                    [attr9] =>
                    [attr10] =>
                    [attr11] =>
                    [attr12] =>
                    [attr13] =>
                    [attr14] =>
                    [attr15] =>
                    [attr16] =>
                    [attr17] => 0
                    [attr18] =>
                    [attr19] =>
                    [attr20] =>
                    [lighthouseBookAuthor] =>
                    [lighthouseIsbn] =>
                    [lighthouseEssentialText] =>
                    [lighthouseIngredients] =>
                    [lighthouseTechnicalSpecifications] =>
                    [lighthouseAllergens] =>
                    [lighthouseAltSeolinkname] =>
                    [lighthouseAlcoholVolume] =>
                )

            [additionaltext] =>
        )

    [name] => Geflügel-Futterautomat 10,5 ltr. KU gelb
    [lastStock] => 0
    [notification] => 0
    [translations] => Array
        (
        )

    [supplierId] => 105
    [taxId] => 1
    [metaTitle] => Geflügel-Futterautomat 10,5 ltr. KU gelb
    [descriptionLong] => 
    [related] =>
    [similar] =>
)

INSERT API ERROR. API hat den Artikel abgelehnt oder die Verbindung ist fehlerhaft. 

das mit http und https haben wir auch. 

ich glaube du benutzt das APIClient Code von Shopware

Das ist aus den bisherigen Antworten bereits ersichtlich, dass dies der Fall ist und auch ein Beispiel vom Array wurde oben bereits gepostet. An dieser Stelle waren wir also schon :slight_smile:

Hallo @kadis‍,

Könnten Sie mir sagen was ist das leer Array zuerst.

ist das das Output von $dataString, wenn ja dann Sie haben ein Probleme mit Ihre Apiclient Call Function:

json_encode werde 3 Output geben :

1- Array mit bad String encoding => output leer String

2- Array mit richig String encoding => output json String {„name“:„Gefl\u00fcgel-Futterautomat 10,5 ltr. KU gelb“ . …}

3- Leer Array => output String ‚‘.

also $dataString output muss keine Array sein??!!

könnten Sie das überprüfen 

VG,

Tel.: +49 755 - 183 990 00 | Web: http://enbit.de/

Vielen Dank.  

-Die Ausgabe war so :

  $dataString = json_encode($data);
  helper::cli_console("dataArray ". print_r($data), ‘info’, ‘API_Client’);

 public function call($url, $method = self::METHOD_GET, $data = array(), $params = array(), $failcount = 0) {
        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, '?') . '?';
		if (strpos($url, 'https') !== false) {
			$url = rtrim($url, '?');
		} else {
			$url = $this->apiUrl . $url . $queryString;
		}

        $dataString = json_encode($data);
		helper::cli_console("dataArray ". print_r($data), 'info', 'API_Client');

		if (empty($dataString) || trim($dataString) == '') {
			helper::cli_console('API: Found a empty POST REQUEST. DATA:'.print_r($data, true), 'critical', 'API_Client');
			throw new Exception('API: Found a empty POST REQUEST. DATA:'.print_r($data, true));
		}
.
.
.
.
.

 

-Datasting Ausgabe sieht dann so aus: (helper::cli_console("dataArray ". print_r($dataString), ‘info’, ‘API_Client’); )

{"KaDIS-Artikelsteuerung":"aktiv","Verkaufsplattform":"AGRAR","supplier_name":"Esschert Design","active":"0","tax":"19","mainDetail":{"number":"25-PY66","prices":[{"customerGroupKey":"UVP-V","price":"22.6050420168067","pseudoPrice":"0","basePrice":"0","from":"1","to":"beliebig"},{"customerGroupKey":"VK2","price":"16","pseudoPrice":"0","basePrice":"0","from":"1","to":"beliebig"},{"customerGroupKey":"VK6","price":"16","pseudoPrice":"0","basePrice":"0","from":"1","to":"beliebig"}],"supplierNumber":"7090361","kind":"1","active":"0","inStock":"0","stockMin":"0","weight":"0.000","width":"0.000","len":"0.000","height":"0.000","ean":"8714982103070","position":"0","minPurchase":"1","purchaseSteps":"1","maxPurchase":"0","purchaseUnit":"1.0000","referenceUnit":"1.000","unit":{"unit":"St\u00fcck","name":"St\u00fcck"},"packUnit":"St\u00fcck","shippingFree":"0","shippingTime":"5","attribute":{"lighthouseAltOrdernumber":"25-PY66","lighthouseCoolDeliveryArticle":"0","ConfigurationArticle":"0","BuildInArticle":"0","lighthouseArticleDeposit":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","attr10":"","attr11":"","attr12":"","attr13":"","attr14":"","attr15":"","attr16":"","attr17":"0","attr18":"","attr19":"","attr20":"","lighthouseBookAuthor":"","lighthouseIsbn":"","lighthouseEssentialText":"","lighthouseIngredients":"","lighthouseTechnicalSpecifications":"","lighthouseAllergens":"","lighthouseAltSeolinkname":"","lighthouseAlcoholVolume":""},"additionaltext":""},"name":"Esschert Design Metall-Rankhilfe 170 cm PY66","lastStock":"0","notification":"0","translations":[],"supplierId":"75","taxId":1,"metaTitle":"Esschert Design Metall-Rankhilfe 170 cm PY66","descriptionLong":"","related":null,"similar":null}dataArray 1