Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 解析xml/json时,如果收到错误消息,请跳过页面_Php_Xml_Json - Fatal编程技术网

Php 解析xml/json时,如果收到错误消息,请跳过页面

Php 解析xml/json时,如果收到错误消息,请跳过页面,php,xml,json,Php,Xml,Json,我有以下问题。我正在解析一个包含多个页面的xml提要,无法了解它们的数量(我在xml url中设置了一个变量,因此每个变量都有随机数量的页面)。我只知道这个数字不能超过50。现在我有了一个脚本,可以自动递增页码的变量,从1开始,直到50 比如说,这个链接总共有26页。使用我的脚本,我将继续发送请求,直到脚本到达第50页。然后更改第一个变量,并从1重新开始到50。对于第一个链接,从第27页开始,xml将返回以下内容: <response> <status>error

我有以下问题。我正在解析一个包含多个页面的xml提要,无法了解它们的数量(我在xml url中设置了一个变量,因此每个变量都有随机数量的页面)。我只知道这个数字不能超过50。现在我有了一个脚本,可以自动递增页码的变量,从1开始,直到50

比如说,这个链接总共有26页。使用我的脚本,我将继续发送请求,直到脚本到达第50页。然后更改第一个变量,并从1重新开始到50。对于第一个链接,从第27页开始,xml将返回以下内容:

<response>
    <status>error</status>
    <code>400</code>
    <message>Incorrect Request Headers</message>
</response>
当scipt收到此消息时,如何停止自动增量并通过更改第一个变量继续,然后在1处重新开始?现在的代码是:

$query = "SELECT * FROM table_name ORDER BY id ASC";
$result = mysql_query($query) or die(mysql_error()); 
while ($row = mysql_fetch_array($result)) {
    if($row['row_name'] == '') {
        $variable1 = 0;
    }
    else {
        $variable1 = $row['row_name'];
    }

$page = 0;
    do {
        $page++;
        $result = apiCall('option1', 'option2', array('option3' => $variable1, 'page' => $page));
        usleep(1000);
        $res = json_decode($result);
            foreach ($res->node1->node2 as $item) {

            //define variable for insertion in MySQL

            $sql1 to insert the variables
            if (!mysql_query($sql1,$con1))
            {
                die('Error: ' . mysql_error());
            }
        }
    }
    while ($page<=50);
}
$query=“从表中选择*按id ASC命名顺序”;
$result=mysql\u query($query)或die(mysql\u error());
while($row=mysql\u fetch\u数组($result)){
如果($row['row\u name']=''){
$variable1=0;
}
否则{
$variable1=$row['row_name'];
}
$page=0;
做{
$page++;
$result=apiCall('option1','option2',array('option3'=>$variable1',page'=>$page));
usleep(1000);
$res=json_decode($result);
foreach($res->node1->node2作为$item){
//定义用于在MySQL中插入的变量
$sql1以插入变量
if(!mysql_query($sql1,$con1))
{
die('Error:'.mysql_Error());
}
}
}

while($pageOK。以下是我玩过的代码:

$query = "SELECT * FROM table_name ORDER BY id ASC";
$result = mysql_query($query) or die(mysql_error()); 
while ($row = mysql_fetch_array($result)) {
    if($row['row_name'] == '') {
        $variable1 = 0;
    }
    else {
        $variable1 = $row['row_name'];
    }

$page = 1;
    do {
        $result = apiCall('option1', 'option2', array('option3' => $variable1, 'page' => $page));
        usleep(1000);
        $res = json_decode($result);
    if ($res->status == 'error') {
            break 2;
        }
            foreach ($res->node1->node2 as $item) {

            //define variable for insertion in MySQL

            $sql1 to insert the variables
            if (!mysql_query($sql1,$con1))
            {
                die('Error: ' . mysql_error());
            }
        }
        $page++;
    }
    while (0);
}

问题是它会在某个点停止脚本执行。无法理解原因。

apiCall做什么?看起来它正在获取网页?更具体地说,$result中是什么?完整的XML?其他内容?它是json格式的完整提要。如果页面为false,即其中没有数据,则输出将如begginin中所述g:状态:“错误”。如果有数据,则状态为equal ti success。我玩过php break,但没有结果。break是处理此问题的一个好方法…让我们看看您使用break时的代码?在进行json_解码之前,您应该能够检查$result,如果它为空,请break…只是为了清楚-没有空页面。如果没有我需要的数据,请参阅(即,您将看到上面所述的错误消息。不是500 error,例如.Ops。错误代码中有我的错误。因此,上面的代码与if()中的正确语句一起工作,即break 2;执行任务。