2013-04-03 2 views
0

я совершенно нового в PHP, и я пытаюсь читать из отклика веб-сервиса, как этот: http://voip.letscall.pt/VSServices/sendsms.ashx?login=123456&pass=3663&from=john&to=peter&text=helloXML-файл не загружается

, но до сих пор я не имел успеха читать ответы, он получает. Вот что я получил до сих пор

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

Вставить некоторые отладки. сделайте file_get_contents(), чтобы захватить ответ url, и выгрузите это. вы получаете xml? затем введите этот xml через валидатор, убедитесь, что он не поврежден/недействителен и т. д. Никогда не предполагайте, что удаленный ресурс работает правильно. всегда проверяйте наличие ошибок. –

ответ

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> 
0

Попробуйте с помощью строки вместо:

$xml = simplexml_load_string(file_get_contents($url)); 
+0

ничего не изменит. f_g_c будет использовать ТОЧНЫЕ те же механизмы, что и s_l_s. –

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)); 
Смежные вопросы