Ich erhalte eine interne Fehlerantwort von 500, wenn ich versuche, Daten über SOAP abzurufen.
Was ich habe, funktioniert und gibt mir keine 500 internen Fehler:
<?php
$client = new SoapClient('http://example.com/api/v2_soap/?wsdl');
$session = $client->login('xxx', 'xxx');
$complexFilter = array(
'complex_filter' => array(
array(
'key' => 'type',
'value' => array('key' => 'in', 'value' => 'simple,configurable')
)
)
);
$result = $client->catalogProductList($session, $complexFilter);
foreach ($result as $key => $value) {
$id = $value->product_id;
echo $id;
// productPrices($id); <-- this issue causes the error.
}
?>
Wenn ich dann versuche, eine Funktion in der foreach-Schleife aufzurufen (siehe Kommentar oben):
function productPrices($id){
$client = new SoapClient('http://example.com/api/soap/?wsdl');
$session = $client->login('xxx', 'xxx');
$att = array("visibility","sku","special_price", "price");
$arguments = array( $id, NULL, $att);
$resultPrice = $client->call($session, 'catalog_product.info', $arguments);
echo $resultPrice['visibility'].",".$resultPrice['sku'].",".$resultPrice['special_price'].",".$resultPrice['price'];
}
Die Antwort, die ich vom Server erhalte, ist jetzt interner Fehler 500. Ich habe maximal 90 SKUs / Produkt-IDs.
Weiß jemand, was der Fehler sein könnte?
magento-1.7
php
soap
soap-api-v2
Troels Johannesen
quelle
quelle
Antworten:
Ungetestet, aber so etwas sollte funktionieren:
quelle
http://example.com/api/soap/?wsdl
über einen Browser darauf zugreifen ? Überprüfen Sie auch dieerror.log
Datei Ihres Webservers , um weitere Informationen zum 500-Fehler zu erhalten.Es scheint, dass Magento eine Ausnahme ausgelöst hat, die zu einem internen Serverfehler führt. Für mich hat geholfen, dass ich alle Ausnahmen protokolliere, die durch Hinzufügen ausgelöst werden
vor der Zeile
throw new Mage_Core_Exception($message);
in derthrowException
Methode inapp/Mage.php
DateiIch hoffe, das hilft Ihnen, Ihren spezifischen Fehler zu finden
quelle
Protokolle
Weitere Informationen finden Sie in den Protokolldateien:
<magento_root>/var/log/*
- insbesonderesystem.log
undexception.log
<magento_root>/var/report/
/var/log/nginx/(error|access).log
oder falls Sie Apache verwenden/var/log/(apache|httpd)/*.log
/var/log/fpm-php.www.log
SSL
Das Standardverhalten des SoapClient unterscheidet sich vom Verhalten des Browsers. Besonders nach Weiterleitungen usw. Ist das
http
richtig? Vielleicht brauchen Sie https?Webserver-Konfiguration
Möglicherweise ist Ihr Webserver so konfiguriert, dass nur Browseranforderungen akzeptiert werden. ZB nach UserAgent-Regeln ...? Oder die API-Route hat besonderen Schutz.
quelle