1
webserviceを使用してprestashopで顧客を更新しようとしています。 webserviceはPHPで書かれています。さて問題は、私は彼が私に同じエラー更新前の顧客プレstashopが機能しない
This call to PrestaShop Web Services failed and returned an HTTP status of 404. That means: Not Found.
を与え続けるためのコード例を使用して顧客を更新することはできません。しかし、私は、ウェブサイトからデータを取得することができるということですが、私はそれを変更したい場合には、与えエラー。
奇妙なことは、コードを使用してユーザーをローカルに更新するときに機能することです。以下
コード:誰かが私を助けることができることを
define('DEBUG', false);
define('PS_SHOP_PATH', 'www.Myshop.com');
define('PS_WS_AUTH_KEY', 'HERE IS NORMALLY THE CORRECT AUTH_KEY ');
require_once('PSWebServiceLibrary.php');
// Here we use the WebService to get the schema of "customers" resource
// First : We always get the customer's list or a specific one
try
{
$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
$opt = array('resource' => 'customers');
if (isset($_GET['id']))
$opt['id'] = $_GET['id'];
$xml = $webService->get($opt);
// Here we get the elements from children of customer markup which is children of prestashop root markup
$resources = $xml->children()->children();
}
catch (PrestaShopWebserviceException $e)
{
// Here we are dealing with errors
$trace = $e->getTrace();
if ($trace[0]['args'][0] == 404) echo 'Bad ID';
else if ($trace[0]['args'][0] == 401) echo 'Bad auth key';
else echo 'Other error<br />'.$e->getMessage();
}
// Second : We update the data and send it to the web service
if (isset($_GET['id']) && isset($_POST['id'])) // Here we check id cause in every resource there's an id
{
// Here we have XML before update, lets update XML with new values
foreach ($resources as $nodeKey => $node)
{
$resources->$nodeKey = $_POST[$nodeKey];
}
// And call the web service
try
{
$opt = array('resource' => 'customers');
$opt['id'] = $_GET[ 'id' ];
$opt['putXml'] = $xml->children()->asXML();
$xml =$webService->edit($opt) ;
// if WebService don't throw an exception the action worked well and we don't show the following message
echo "Successfully updated.";
}
catch (PrestaShopWebserviceException $ex)
{
// Here we are dealing with errors
echo "testy";
$trace = $ex->getTrace();
if ($trace[1]['args'][0] == 404) echo 'Bad ID';
else if ($trace[0]['args'][0] == 401) echo 'Bad auth key';
else echo 'Other error<br />'.$ex->getMessage();
}
}
// UI
// We set the Title
echo '<h1>Customer\'s ';
if (isset($_GET['id'])) echo 'Update';
else echo 'List';
echo '</h1>';
// We set a link to go back to list if we are in customer's details
if (isset($_GET['id']))
echo '<a href="?">Return to the list</a>';
if (isset($_GET['id']))
echo '<form method="POST" action="?id='.$_GET['id'].'">';
echo '<table border="5">';
if (isset($resources))
{
echo '<tr>';
if (!isset($_GET['id']))
{
//Show list of customers
echo '<th>Id</th><th>More</th></tr>';
foreach ($resources as $resource)
{
echo '<td>'.$resource->attributes().'</td><td>'.
'<a href="?id='.$resource->attributes().'">Update</a> '.
'</td></tr>';
}
}
else
{
//Show customer form
echo '</tr>';
foreach ($resources as $key => $resource)
{
echo '<tr><th>'.$key.'</th><td>';
echo '<input type="text" name="'.$key.'" value="'.$resource.'"/>';
echo '</td></tr>';
}
}
}
echo '</table><br/>';
if (isset($_GET['id']))
echo '<input type="submit" value="Update"></form>';
?>
</body></html>
希望。
こんにちはためのデータ
おかげでみんなを更新する可能性の下、私はこのコードを追加しました。 WebサービスショップでDEBUG MODEを有効にして、エラーの詳細を確認してください。ホスティングのPOST権限を確認してください。がんばろう。 – PrestaAlba
まず、私の問題を見てくれてありがとう。私がデバッグモードを起動したとき、私は奇妙なことは何も見ませんでしたが、ホスティングの権限をチェックしたときに問題が発生することがありました。ご支援ありがとうございます –