我是PHP的新手,我试图从像这样的Web服务的响应中读取: http://voip.letscall.pt/VSServices/sendsms.ashx?login=123456&pass=3663&from=john&to=peter&text=hello
但到目前为止,我还没有成功阅读它得到的答案。这是我到目前为止所得到的
<?php
header("Content-Type: text/plain;charset=utf-8");
$url = 'http://voip.letscall.pt/VSServices/sendsms.ashx?login=123456&pass=3663&from=john&to=peter&text=hello';
$xml = simplexml_load_file($url);
echo $xml;
?>
提前致谢!!
答案 0 :(得分:1)
错误报告告诉我,您所呈现的内容与您的回复之间存在编码问题:
error_reporting(E_ALL);
header("Content-Type: text/plain;charset=utf-8");
警告:simplexml_load_file():http://voip.letscall.pt/VSServices/sendsms.ashx?login=123456&pass=3663&from=john&to=peter&text=hello:1:解析器错误:文档标记为UTF-16但具有UTF-8内容
响应:
<?xml version="1.0" encoding="***utf-16***"?>
<response>
<sms_response_code>400</sms_response_code>
<sms_response_text>Authorization failed.</sms_response_text>
<sms_response_destination />
</response>
答案 1 :(得分:0)
尝试通过字符串代替:
$xml = simplexml_load_string(file_get_contents($url));
答案 2 :(得分:0)
源XML格式不正确。 XML序言说这个xml文件是utf-16,所以这就是它解析文件的方式。但该文件不 utf-16编码,它是utf-8编码。
告诉来源修复他们的xml。如果他们不这样做,那么你必须在解析它之前更改XML,这很容易出错并且 icky 。 E.g:
$xml = preg_replace(
'/^(<\?[xX][mM][lL]\s+[^\?\>]+encoding\s*=\s*([\'"]))utf-16\2/u',
'\1utf-8\2', file_get_contents($url));