Php 在通过webservice创建类别期间出现预设置错误302

Php 在通过webservice创建类别期间出现预设置错误302,php,web-services,prestashop,crud,http-status-code-302,Php,Web Services,Prestashop,Crud,Http Status Code 302,你好 我正在通过webservice在prestashop上添加一个类别。 我遇到了一些302错误,所以我尝试从头开始 这是我从doc网站获取的文件,作为插入类别的示例: <html><head><title>CRUD - Create Categories</title></head><body> <?php // Here we define constants /!\ You need to replace th

你好

我正在通过webservice在prestashop上添加一个类别。 我遇到了一些302错误,所以我尝试从头开始

这是我从doc网站获取的文件,作为插入类别的示例:

<html><head><title>CRUD - Create Categories</title></head><body>
<?php
// Here we define constants /!\ You need to replace this parameters
define('DEBUG', true);
define('PS_SHOP_PATH', 'http://www.myserver.com');
define('PS_WS_AUTH_KEY', 'THEAUTHKEYISHERE');
require_once('./PSWebServiceLibrary.php');

error_reporting(E_ALL);
ini_set('display_errors', '1');

// Here we use the WebService to get the schema of "customers" resource
try
{
    $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
    $opt = array('resource' => 'categories');
    if (isset($_GET['Create']))
        $xml = $webService->get(array('url' => PS_SHOP_PATH.'/api/categories?schema=blank'));
    else
        $xml = $webService->get($opt);
    $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';
}

if (count($_POST) > 0)
{
// Here we have XML before update, lets update XML
    foreach ($resources as $nodeKey => $node)
    {
        $resources->$nodeKey = $_POST[$nodeKey];
    }
    try
    {
        $opt = array('resource' => 'categories');
        if ($_GET['Create'] == 'Creating')
        {
            $opt['postXml'] = $xml->asXML();
            $xml = $webService->add($opt);
            echo "Successfully added.";
        }
    }
    catch (PrestaShopWebserviceException $ex)
    {
        // Here we are dealing with errors
        $trace = $ex->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 />'.$ex->getMessage();
    }
}

// We set the Title
echo '<h1>Categories\'s ';
if (isset($_GET['Create'])) echo 'Creation';
else echo 'List';
echo '</h1>';

// We set a link to go back to list if we are in creation
if (isset($_GET['Create']))
    echo '<a href="?">Return to the list</a>';

if (!isset($_GET['Create']))
    echo '<input type="button" onClick="document.location.href=\'?Create\'" value="Create">';
else
    echo '<form method="POST" action="?Create=Creating">';

echo '<table border="5">';
if (isset($resources))
{

    echo '<tr>';
    if (count($_GET) == 0)
    {
        echo '<th>Id</th></tr>';

        foreach ($resources as $resource)
        {
            echo '<tr><td>'.$resource->attributes().'</td></tr>';
        }
    }
    else
    {
        echo '</tr>';
        foreach ($resources as $key => $resource)
        {
            echo '<tr><th>'.$key;
            if ((bool)$resource['required'] == true)
                echo ' (*)'; // * for required fields
            echo '</th><td>';
            if (isset($_GET['Create']))
                echo '<input type="text" name="'.$key.'" value=""/>';
            echo '</td></tr>';
        }
    }

}
echo '</table><br/>';

if (isset($_GET['Create']))
    echo '<input type="submit" value="Create"></form>';

?>
</body></html>

URL重写是打开的,类别空白模式可在空白模式URL处被引导。

你知道这个奇怪的302错误(状态)吗

更新日期:2014年2月11日 我还挖掘了一些,我已经读到了关于302状态的信息,所以我设法从302状态中获得了“location:”参数,这是一个URL编码的URL。 如果我使用该url“按原样”预设,Web服务将不会按应有的方式响应,但如果对url进行idecode编码并进行检查,一切都很好,我搜索的类别就在那里,示例如下:

http://myserver.com/api/categories?filter[name]=[iPods]
这似乎奏效了。而:

http://myserver.com/api/categories?filter%5Bname%5D=%5B+iPods+%5D?url=categories&filter%5Bname%5D=%5B+iPods+%5D

不起作用,但这是Web服务返回给我的url。。。有人知道吗?

302的意思是“找到了”。这很好,不是错误。也许我不知道你在问什么。

302的意思是“找到了”。这很好,不是错误。也许我不知道你在问什么。

302的意思是“找到了”。这很好,不是错误。也许我不知道你在问什么。

302的意思是“找到了”。这很好,不是错误。也许我不知道你在问什么。

解决了。问题是我戴上了帽子

define('PS_SHOP_PATH', 'http://www.myserver.com');
但从反应来看,他们来自

http://myserver.com/api/categories?filter%5Bname%5D=%5Bcategoria+test%5D?url=categories&filter%5Bname%5D=%5Bcategoria+test%5D
我只需要删除定义中的“www”仅此而已


问题是htaccess试图进行重定向,一个302重定向,但是读取xml的组件t不支持它。

解决了这个问题。问题是我戴上了帽子

define('PS_SHOP_PATH', 'http://www.myserver.com');
但从反应来看,他们来自

http://myserver.com/api/categories?filter%5Bname%5D=%5Bcategoria+test%5D?url=categories&filter%5Bname%5D=%5Bcategoria+test%5D
我只需要删除定义中的“www”仅此而已


问题是htaccess试图进行重定向,一个302重定向,但是读取xml的组件t不支持它。

解决了这个问题。问题是我戴上了帽子

define('PS_SHOP_PATH', 'http://www.myserver.com');
但从反应来看,他们来自

http://myserver.com/api/categories?filter%5Bname%5D=%5Bcategoria+test%5D?url=categories&filter%5Bname%5D=%5Bcategoria+test%5D
我只需要删除定义中的“www”仅此而已


问题是htaccess试图进行重定向,一个302重定向,但是读取xml的组件t不支持它。

解决了这个问题。问题是我戴上了帽子

define('PS_SHOP_PATH', 'http://www.myserver.com');
但从反应来看,他们来自

http://myserver.com/api/categories?filter%5Bname%5D=%5Bcategoria+test%5D?url=categories&filter%5Bname%5D=%5Bcategoria+test%5D
我只需要删除定义中的“www”仅此而已



问题是htaccess试图进行重定向,一个302重定向,但是读取xml的组件t不支持它。

哦。。。它应该被建立,但没有给出响应,我通常得到一个xml作为响应,而不是这个“302状态”。我认为这是一个错误,因为示例本身突然停止,没有任何其他消息(或者诸如创建类别的动作),确保您试图从中拉出的脚本实际上返回了一些东西。请尝试直接在浏览器中运行URL,查看是否正在发回内容。我已打开错误报告:致命错误:未捕获异常“PrestaShopWebserviceException”,并显示消息“此调用PrestaShop Web服务返回了意外的HTTP状态:302”。这似乎是一个错误。您是对的,302不是一个错误,但是组件不够聪明,无法调用重定向url。。。无论如何谢谢你:)哦。。。它应该被建立,但没有给出响应,我通常得到一个xml作为响应,而不是这个“302状态”。我认为这是一个错误,因为示例本身突然停止,没有任何其他消息(或者诸如创建类别的动作),确保您试图从中拉出的脚本实际上返回了一些东西。请尝试直接在浏览器中运行URL,查看是否正在发回内容。我已打开错误报告:致命错误:未捕获异常“PrestaShopWebserviceException”,并显示消息“此调用PrestaShop Web服务返回了意外的HTTP状态:302”。这似乎是一个错误。您是对的,302不是一个错误,但是组件不够聪明,无法调用重定向url。。。无论如何谢谢你:)哦。。。它应该被建立,但没有给出响应,我通常得到一个xml作为响应,而不是这个“302状态”。我认为这是一个错误,因为示例本身突然停止,没有任何其他消息(或者诸如创建类别的动作),确保您试图从中拉出的脚本实际上返回了一些东西。请尝试直接在浏览器中运行URL,查看是否正在发回内容。我已打开错误报告:致命错误:未捕获异常“PrestaShopWebserviceException”,并显示消息“此调用PrestaShop Web服务返回了意外的HTTP状态:302”。这似乎是一个错误。您是对的,302不是一个错误,但是组件不够聪明,无法调用重定向url。。。无论如何谢谢你:)哦。。。它应该被建立,但没有给出响应,我通常得到一个xml作为响应,而不是这个“302状态”。我认为这是一个错误,因为示例本身突然停止,没有任何其他消息(或者诸如创建类别的动作),确保您试图从中拉出的脚本实际上返回了一些东西。请尝试直接在浏览器中运行URL,查看是否正在发回内容。我已打开错误报告:致命错误:未捕获异常“PrestaShopWebserviceException”,并显示消息“此调用PrestaShop Web服务返回了意外的HTTP状态:302”。这似乎是一个错误。您是对的,302不是一个错误,但是组件不够聪明,无法调用重定向url。。。无论如何谢谢你:)很好!我对它为什么会这样感到非常困惑。。。很好!美好的我对它为什么会这样感到非常困惑。。。很好!美好的我对它为什么会这样感到非常困惑。。。很好!美好的我非常困惑我为什么