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 の形式が正しくありません。XML プロローグは、この xml ファイルが utf-16 であると述べているため、これがファイルの解析方法です。ただし、ファイルはutf-16 でエンコードされておらず、utf-8 でエンコードされています

ソースに xml を修正するように伝えます。彼らがそれをしない場合は、解析する前に XML を変更する必要があります。これは、エラーが発生しやすく厄介です。例えば:

$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 に答える