Prestashop Webservice XML响应解析错误

时间:2017-04-11 11:58:19

标签: php web-services prestashop prestashop-1.6

我试图通过API从我的供应商导入我的订单到我的PS 1.6.0.14。好吧,在localhost中一切正常,但现在在服务器上我遇到了一个大问题。

尝试检查客户是否存在时,我收到此错误。

HTTP XML response is not parsable: array ( 0 => LibXMLError::__set_state(array( 'level' => 3, 'code' => 4, 'column' => 1, 'message' => 'Start tag expected, \'<\' not found ', 'file' => '', 'line' => 1, )), )

检查客户是否存在的功能就是这个:

function custExist($email_ws, $webService){
    $opt = [
        'resource'      => 'customers',
        'display'       => '[email]',
        'filter[email]' => '['.$email_ws.']',
        'limit'         => '1',
    ];

    //After this call, I've got the error.
    $xml = $webService->get($opt);

    if($email_ws == $xml->customers->customer->email)
        return FALSE;
    else
        return TRUE;

}

最后,webservice获取功能:

public function get($options)
{
    if (isset($options['url']))
        $url = $options['url'];
    elseif (isset($options['resource']))
    {
        $url = $this->url.'/api/'.$options['resource'];
        $url_params = array();
        if (isset($options['id']))
            $url .= '/'.$options['id'];

        $params = array('filter', 'display', 'sort', 'limit', 'id_shop', 'id_group_shop');
        foreach ($params as $p)
            foreach ($options as $k => $o)
                if (strpos($k, $p) !== false)
                    $url_params[$k] = $options[$k];
        if (count($url_params) > 0)
            $url .= '?'.http_build_query($url_params);
    }
    else
        throw new PrestaShopWebserviceException('Bad parameters given');

    $request = self::executeRequest($url, array(CURLOPT_CUSTOMREQUEST => 'GET'));

    self::checkStatusCode($request['status_code']);// check the response validity
    return self::parseXML($request['response']);
}

任何解决此问题的提示?提前谢谢。

编辑:我已经从后端删除了友情网址,现在错误更大......如果我在响应中启用了webservice调用的调试模式,那么我有一些HTML代码,没有JSON响应。有点奇怪...

RETURN HTTP BODY
<!DOCTYPE HTML>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="es-es"><![endif]-->
<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8 ie7" lang="es-es"><![endif]-->
<!--[if IE 8]><html class="no-js lt-ie9 ie8" lang="es-es"><![endif]-->
<!--[if gt IE 8]> <html class="no-js ie9" lang="es-es"><![endif]-->
<html lang="es-es">
    <head>
        <meta charset="utf-8" />
        <title>PAGE TITLE</title>
        <meta name="description" content="Tienda creada con PrestaShop" />
        <meta name="keywords" content="tienda, prestashop" />
        <meta name="generator" content="PrestaShop" />
        <meta name="robots" content="index,follow" />
        <meta name="viewport" content="width=device-width, minimum-scale=0.25, maximum-scale=1.6, initial-scale=1.0" />
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <link rel="icon" type="image/vnd.microsoft.icon" href="/img/favicon.ico?1482254072" />
.......

编辑2:好的,问题成立了。调用API Webservice的URL,例如www.myprestashop.com/api/customers,将我重定向到我的商店前端。

有什么想法吗? :(

1 个答案:

答案 0 :(得分:0)

可能是与CHMOD权限相关的内容。如果您正在使用AWS服务,我百分百肯定就是这样。

嗯,没有来自网络服务的数据?进行其他类型的通话。