java - XML 响应时间 ejabberd

标签 java android xml response ejabberd


目前,我正在尝试开发用于即时消息传递的 Android 应用程序。我想在 Ubuntu 服务器上为此使用 ejabberd。只有一个问题。 当我首先尝试使用此 xml 行连接到我的 ejabberd 时:
<stream:stream to='x.x.x.x' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
收到答案需要很长时间(大约 20 秒,有时更长)。 当我向服务器发送一些“好”数据时,我遇到了这个问题。发送一些“坏”数据,我很快收到错误消息。

它由 Android IntentService 执行 我也会在这里发布我的代码: 属性:

private Socket socket;
private String host = "x.x.x.x";
private int port = 5222;
private OutputStream out = null;
private String in = null;

doInBackground():

this.socket = new Socket(host,port);
if(!this.socket.isConnected()){
        Log.e("Socket","Socket nicht geöffnet");
}else{
        Log.e("Socket","Socket erfolgreich geöffnet");

    //create output stream
    try {
            this.out = socket.getOutputStream();
    } catch (IOException e) {
        e.printStackTrace();
    }

    //write to output stream
    StringBuffer stringbuffer = new StringBuffer();
    stringbuffer.append("<stream:stream to='5.175.8.41' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>");

    //convert into bits and give it to outputstream
    try {
            this.out.write(String.valueOf(stringbuffer).getBytes("UTF-8"),0,String.valueOf(stringbuffer).getBytes().length);
            out.flush();
            Log.e("Connecting-out","Erstes Tupel erfolgreich gesendet.");
    } catch (IOException e) {
        e.printStackTrace();
    }


    //receive the answer from server
    try {
        Log.e("lol","lol");
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"),200);
    StringBuilder builder = new StringBuilder();
    String aux;
    aux = in.readLine();


    this.in = builder.toString();
    Log.e("...",aux);



    } catch (IOException e) {

    e.printStackTrace();
    }

    Log.e("Connecting-in",in);


我认为尤其是这些行

StringBuilder builder = new StringBuilder();
    String aux;
    aux = in.readLine();


        this.in = builder.toString();

需要很长时间。但奇怪的是,错误信息的读取速度非常快。所以它必须是服务器?

有人可以帮帮我吗? 提前致谢:)

最佳答案

您使用了 readLine() 并等待换行符。

出错时,服务器通常会断开连接。 这就是为什么您会立即得到错误答案的原因。

我建议你不要使用 readLine()

关于java - XML 响应时间 ejabberd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22423862/

相关文章:

java - 输入中的 Tapestry 形式类型=图像不起作用

java - 如何在Swing中设置tooltip的背景?

java - 如何在turbolinks-android上加载网页内容

xml - XStream反序列化具有分层对象列表的xml

使用 simpleJSon 创建数组数组的 Java 代码

java - 通过 mp3agic 访问歌词

java - 如何在用户选择首选项后重新运行 onCreate。

android - 在 ubuntu 上安装 ADT - adb & fastboot 不起作用?

java - 使用 Selenium 从 XML 文件填写表单

ios - NSXMLParser 访问字符串值错误