Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XMPP注册新用户_Java_Android_Xmpp_Smack - Fatal编程技术网

Java XMPP注册新用户

Java XMPP注册新用户,java,android,xmpp,smack,Java,Android,Xmpp,Smack,我对XMPP有很多问题,我是新手,我发现所有的例子都已经有了一个帐户,它们可以连接然后做一些事情 我的问题与新用户有关。没有帐户的人需要能够注册自己,然后登录。但正如我所理解的,在创建用户之前,首先需要创建一个连接。因此,没有帐户,您无法创建帐户 我一直在读的一些链接: 所以基本上,我需要创建一个没有用户登录的连接。然后创建一个用户并使用该用户登录 所以我发现: 但是AccountManager类似乎已经过时了,或者是因为我在同一路径中找不到它。() 所以问题是:如何创建一个新帐户,

我对XMPP有很多问题,我是新手,我发现所有的例子都已经有了一个帐户,它们可以连接然后做一些事情

我的问题与新用户有关。没有帐户的人需要能够注册自己,然后登录。但正如我所理解的,在创建用户之前,首先需要创建一个连接。因此,没有帐户,您无法创建帐户

我一直在读的一些链接:

所以基本上,我需要创建一个没有用户登录的连接。然后创建一个用户并使用该用户登录

所以我发现:

但是AccountManager类似乎已经过时了,或者是因为我在同一路径中找不到它。()

所以问题是:如何创建一个新帐户,然后使用它登录(从新用户的角度)?

一个小的代码片段或链接到一些源代码将是非常感谢

编辑1: 我已经说到这一点:

        XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
                .setServiceName("jabber.org")
                .setHost(AppConfig.XMPP_HOST)
                .setPort(Integer.parseInt(AppConfig.XMPP_PORT))
                .build();

        XMPPConnection connection = new XMPPTCPConnection(config);
现在我需要实例化一个AccountManager对象,但它在smack 4.1中不可用

我试图遵循以下示例:

尽管我读到它应该在smackx中。我在smackx中唯一能找到的是:

import org.jivesoftware.smackx.debugger.android.AndroidDebugger

我有一个针对Android应用程序的xmpp服务。我在服务器中有一个JavaWebSerice和一个xmpp服务器。xmpp服务器是OpenFire,它有一个通过http请求进行make操作的插件。这是我注册新用户的web服务方法。我想我最终会使用这个解决方案,因为像您这样的我不可能直接从用户那里注册新用户。我在客户端也使用asmack

 public int register(Connection conn,String login,String clave){
    try {
            HttpClient client = new DefaultHttpClient();
            client= WebClientDevWrapper.wrapClient(client);
            //client.setStrictMode(true);
            //client.setTimeout(60000);
            //client.setConnectionTimeout(5000);
            HttpPost post = null;

            String URL="http://your.ip.server:9090/plugins/userService/userservice" +
                    "?type=update&secret="+secret_key_of+"&username="+login.substring(1)+"&password="+clave;
            post = new HttpPost(URL);

            post.setHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8");

            HttpResponse httpStatus = null;
            int response = 0;
            try {
                httpStatus = client.execute(post);
                response = httpStatus.getStatusLine().getStatusCode();
            }
            catch (Exception e) {
            }
              if(response==200){
                  return 200;
              }else{
                  return 502;
              }
    } catch (Exception e) {
        return 501;
    }
}

创建帐户的方法是首先连接到服务器,然后初始化帐户创建。基本上,您创建了一个连接,您可以在其中创建一个帐户,然后继续创建所述帐户。我是这样做的:

XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration.builder()
            .setServiceName(SERVICE_NAME)
            .setHost(HOST_NAME)
            .setPort(5222)
            .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
            .build();

AbstractXMPPConnection connection = new XMPPTCPConnection(conf);
connection.connect(); // Here we create the connection

// Now we create the account:
AccountManager accountManager = AccountManager.getInstance(connection);
accountManager.createAccount(username, password);

// The account has been created, so we can now login
connection.login(username, password);

因此,我们首先初始化连接,创建帐户,然后登录。希望这有助于使用smack 4.0.6版本。Te最新版本(现在是4.1.8)没有AccountManager类。我的maven依赖项是:

    <dependency>
        <groupId>org.igniterealtime.smack</groupId>
        <artifactId>smack-core</artifactId>
        <version>4.0.6</version>
    </dependency>
    <dependency>
        <groupId>org.igniterealtime.smack</groupId>
        <artifactId>smack-tcp</artifactId>
        <version>4.0.6</version>
    </dependency>

org.igniterealtime.smack
抽芯
4.0.6
org.igniterealtime.smack
smack tcp
4.0.6

我注意到许多人喜欢这样做,与简单的否决相比,建设性反馈更受欢迎。通常这里的用户喜欢看到尝试(可能很粗糙)&具体问题-以及问题。@劳尔感谢反馈,我将发布我的尝试(我正在尝试的一个,因为我已经删除了旧的)谢谢,我可能也会尝试这种方法。这帮了我的忙!我想知道有没有办法注册一组自定义参数。例如,设备的唯一id和电话号码等。AccountManager不显示在我的Android studio中,我的帐户管理器继承自androi.accounts,看起来像我的Android studio have ambigue import,我如何解决这个问题?但是它返回org.jivesoftware.smack.XMPPException$XMPPErrorException:XMPPError:bad request-modifyHmm我会在继续smack项目时检查这个问题,如果我继续smack项目。这个问题来自一年多以前,现在我已经为我们的聊天选择了一个不同的实现。可能在fu中是的,我会再试试smack。