Java XMPP注册新用户
我对XMPP有很多问题,我是新手,我发现所有的例子都已经有了一个帐户,它们可以连接然后做一些事情 我的问题与新用户有关。没有帐户的人需要能够注册自己,然后登录。但正如我所理解的,在创建用户之前,首先需要创建一个连接。因此,没有帐户,您无法创建帐户 我一直在读的一些链接: 所以基本上,我需要创建一个没有用户登录的连接。然后创建一个用户并使用该用户登录 所以我发现: 但是AccountManager类似乎已经过时了,或者是因为我在同一路径中找不到它。() 所以问题是:如何创建一个新帐户,然后使用它登录(从新用户的角度)? 一个小的代码片段或链接到一些源代码将是非常感谢 编辑1: 我已经说到这一点:Java XMPP注册新用户,java,android,xmpp,smack,Java,Android,Xmpp,Smack,我对XMPP有很多问题,我是新手,我发现所有的例子都已经有了一个帐户,它们可以连接然后做一些事情 我的问题与新用户有关。没有帐户的人需要能够注册自己,然后登录。但正如我所理解的,在创建用户之前,首先需要创建一个连接。因此,没有帐户,您无法创建帐户 我一直在读的一些链接: 所以基本上,我需要创建一个没有用户登录的连接。然后创建一个用户并使用该用户登录 所以我发现: 但是AccountManager类似乎已经过时了,或者是因为我在同一路径中找不到它。() 所以问题是:如何创建一个新帐户,
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。