2017-01-03 10 views
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>&nbsp;'. 
     '</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> 

希望。

+0

こんにちはためのデータ

<Limit GET POST PUT DELETE HEAD OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST PUT DELETE HEAD OPTIONS> Order deny,allow Deny from all </LimitExcept> 

おかげでみんなを更新する可能性の下、私はこのコードを追加しました。 WebサービスショップでDEBUG MODEを有効にして、エラーの詳細を確認してください。ホスティングのPOST権限を確認してください。がんばろう。 – PrestaAlba

+0

まず、私の問題を見てくれてありがとう。私がデバッグモードを起動したとき、私は奇妙なことは何も見ませんでしたが、ホスティングの権限をチェックしたときに問題が発生することがありました。ご支援ありがとうございます –

答えて

1

問題は私のコードではなく、私の.htaccessファイルにあります。

私はエラーを持っていなかった、サポート

関連する問題