XML 解析错误:“Not well-formed (invalid token)”,f***g/xmpp PHP library package with xmpp openfire

Posted

技术标签:

【中文标题】XML 解析错误:“Not well-formed (invalid token)”,f***g/xmpp PHP library package with xmpp openfire【英文标题】:XML parsing error: "Not well-formed (invalid token)", f***g/xmpp PHP library package with xmpp openfire 【发布时间】:2016-03-22 11:15:50 【问题描述】:

我一直试图弄清楚为什么在尝试向我的服务器“发送出席信息”(在同一台机器上本地运行)时出现“XML 解析错误:“格式不正确(无效令牌)”错误),在成功将用户连接到服务器后。

一切都很好,直到我尝试访问客户端对象上的$client->send(new Presence); 方法,例如在他连接之后。这是我在运行$client = new Client($options); 并转储进程中返回的客户端对象后得到的结果。

客户端对象转储

但是,如果我在控制器中运行代码行,例如 $client->send(new Presence); 之后,我会收到这个讨厌的错误

XML 解析错误

我的控制器测试方法中的代码对此非常简单,只需使用 packagist 上 f***g/xmpp 包的文档中的指南。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

use F***g\Xmpp\Client;
use F***g\Xmpp\Options;
use F***g\Xmpp\Protocol\Roster;
use F***g\Xmpp\Protocol\Presence;
use F***g\Xmpp\Protocol\Message;

class XmppController extends Controller


    public function __construct() 



    

    public function test() 

        $address = "dergree-pc:9090"; // if using HTTP in front, it will give the "cant open stream exception"
        $username = "test";
        $password = "password";

        $options = new Options($address);
        $options->setUsername($username)->setPassword($password);

        $client = new Client($options);

        // ALL THE ABOVE CODE WORKS

        $client->send(new Presence); // this or any other line below gives the XML parsing error
        // optional connect manually
        //$client->connect();
        //$client->send(new Roster);


    


【问题讨论】:

【参考方案1】:

您必须先连接到 XMPP 服务器并对其进行身份验证,然后才能发送出席信息。 在您发送出席信息之前,您的测试函数不会调用 connect 方法。

【讨论】:

$client->connect() 只是一种手动连接方式,因为调用 new Client($options) 会自动执行此操作:) 我发现了问题...这是由于某些 SSL 证书设置在openfire服务器上。因此,它没有让身份验证通过。我已经禁用了 SSL(因为这是一个测试项目)并启用了 TLS(我认为这就是它的名字)并且它有效 :) 感谢您提供帮助,非常感谢!

以上是关于XML 解析错误:“Not well-formed (invalid token)”,f***g/xmpp PHP library package with xmpp openfire的主要内容,如果未能解决你的问题,请参考以下文章

Error:(58) Error parsing XML: not well-formed (invalid token)

Selenium2+Python3.6实战:读取xml文件,获得标签信息ExpatError: not well-formed (invalid token)

Error parsing XML: not well-formed (invalid token) 报错+R文件消失解决的方法

Pointcut is not well-formed: expecting '(' at character position 0 mypt

Pointcut is not well-formed: expecting 'name pattern' at character position

Spring AOP表达式报错:Pointcut is not well-formed: expecting 'name pattern' at character position(