0

我是 PHP 的新手,我正在尝试从像这样的 web 服务的响应中读取:http: //voip.letscall.pt/VSServices/sendsms.ashx ?login=123456&pass=3663&from=john&to=peter&text=你好

但到目前为止,我还没有成功阅读它得到的回复。这是我到目前为止得到的

<?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;

?>

提前致谢!!

4

3 回答 3

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>
于 2013-04-03T18:02:42.697 回答
0

改为通过字符串尝试:

$xml = simplexml_load_string(file_get_contents($url));
于 2013-04-03T17:54:42.220 回答
0

源 XML 格式不正确。XML 序言说这个 xml 文件是 utf-16,所以这就是它解析文件的方式。但是文件不是utf-16 编码的,它是 utf-8 编码的。

告诉源修复他们的 xml。如果他们不这样做,那么您必须在解析 XML 之前更改它,这很容易出错并且icky。例如:

$xml = preg_replace(
          '/^(<\?[xX][mM][lL]\s+[^\?\>]+encoding\s*=\s*([\'"]))utf-16\2/u',
          '\1utf-8\2', file_get_contents($url));
于 2013-04-03T18:29:48.110 回答