Php 使用curl函数中返回的xml
我有一个curl函数,它连接到API并返回xml 我从另一个脚本调用这个函数,希望遍历xml并选择一些URL,但是我得到一个I/O错误,因此我认为我没有正确处理xml 这是旋度函数Php 使用curl函数中返回的xml,php,xml,curl,ioerror,Php,Xml,Curl,Ioerror,我有一个curl函数,它连接到API并返回xml 我从另一个脚本调用这个函数,希望遍历xml并选择一些URL,但是我得到一个I/O错误,因此我认为我没有正确处理xml 这是旋度函数 function &connect($url) { //If token is not set skip to else condition to request a new token if(!empty($_SESSION['token'])) { //Initia
function &connect($url) {
//If token is not set skip to else condition to request a new token
if(!empty($_SESSION['token'])) {
//Initiate a new curl session
$ch = curl_init($url);
//Don't require header this time as curl_getinfo will tell us if we get HTTP 200 or 401
curl_setopt($ch, CURLOPT_HEADER, 0);
//Provide Token in header
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$_SESSION['token']));
//Execute the curl session
$data = curl_exec($ch);
//Close the curl session
curl_close($ch);
return $data;
} else {
//Run the getToken function above if we are not authenticated
getToken($url);
return 'error';
}
}
这就是它的名字
//build url creates the api url required based on parameters passed into GET
$link = build_url;
//call the connect function and pass it the built link
$xml = connect($link);
//load the returned xml
$oxml = simplexml_load_file($xml);
connect函数肯定是在获取xml,因为我在函数中回显了它,而且当我在浏览器中运行脚本时,它会将xml输出到屏幕以及“警告:simplexml_load_file():I/O警告:无法在中加载外部实体“1”
我不确定我遗漏了什么:-(simplexml\u load\u file();
通过传递文件名从文件中加载XML
因为您已经有了XML字符串,所以需要使用simplexml\u load\u string();
代替它
编辑:
您还需要使用
curl\u setopt($ch,CURLOPT\u RETURNTRANSFER,true);
来告诉curl返回响应,而不是仅仅返回一个状态码。您看到的1
是状态码。是build\u url
函数吗?它不应该是build\u url()
?$oxml=simplexml\u load\u文件吗($xml->asXML());
…可能吗?nl-x是的,这是我在上面发布时简化的一个输入错误。为什么连接函数返回引用?(调用函数时不是这样使用吗?)我确实试过了,但它抛出了一个不同的错误,这使我认为其他地方或我处理xml的方式有问题。即使我直接调用API,返回的xml格式完美且有效。警告:simplexml_load_string():Entity:第1行:解析器错误:应该是Start标记,@PaulM我早就料到了。尽管你现在离XML更近了一步。下一个问题是,为什么你只使用“1”而不是XML?我认为你的curl有问题。(虽然我仍然不理解你的函数返回引用,但不是那样使用的。)检查我的编辑。明白了;-)这是丢失的returntransfer。最初它是写入一个文件,但我想使用它,所以删除了那一行,没有替换它。我仍然没有得到引用,所以上面是一个打字错误,我在玩,如果它对我自己的教育有影响的话!