Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Xmpp 在openfire中搜索用户时请求错误400_Xmpp_Openfire_Smack_Asmack - Fatal编程技术网

Xmpp 在openfire中搜索用户时请求错误400

Xmpp 在openfire中搜索用户时请求错误400,xmpp,openfire,smack,asmack,Xmpp,Openfire,Smack,Asmack,我正试图在明火中搜索一个用户 public void searchUser(String username) { UserSearchManager userSearchManager = new UserSearchManager( xmppConnection); Form searchForm; try { searchForm = userSearchManager.getSearc

我正试图在明火中搜索一个用户

public void searchUser(String username) {
        UserSearchManager userSearchManager = new UserSearchManager(
                xmppConnection);
        Form searchForm;
        try {

            searchForm = userSearchManager.getSearchForm("search."
                    + xmppConnection.getServiceName());

            Form answerForm = searchForm.createAnswerForm();
            answerForm.setAnswer("Username", true);

            answerForm.setAnswer("search", username);

            org.jivesoftware.smackx.ReportedData data = userSearchManager
                    .getSearchResults(answerForm,
                            "search." + xmppConnection.getServiceName());

            if (data.getRows() != null) {
                Iterator<Row> it = data.getRows();
                while (it.hasNext()) {
                    Row row = it.next();
                    Iterator<?> iterator = row.getValues("jid");
                    if (iterator.hasNext()) {
                        String value = iterator.next().toString();
                        System.out.println(value);
                    }

                }

            }
        } catch (XMPPException e) {
            e.printStackTrace();
        }
    }
但我还是很高兴

12-07 01:14:58.027: W/System.err(1591): bad-request(400)
12-07 01:14:58.037: W/System.err(1591):     at org.jivesoftware.smackx.search.UserSearch.getSearchForm(UserSearch.java:84)
12-07 01:14:58.037: W/System.err(1591):     at org.jivesoftware.smackx.search.UserSearchManager.getSearchForm(UserSearchManager.java:73)
12-07 01:14:58.037: W/System.err(1591):     at com.afinity.core.chat.ChatManager.searchUser(ChatManager.java:107)
12-07 01:14:58.037: W/System.err(1591):     at com.afinity.chat.ui.Activity.<init>(Activity.java:19)
12-07 01:14:58.037: W/System.err(1591):     at java.lang.Class.newInstanceImpl(Native Method)
12-07 01:14:58.047: W/System.err(1591):     at java.lang.Class.newInstance(Class.java:1208)
12-07 01:14:58.047: W/System.err(1591):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
12-07 01:14:58.047: W/System.err(1591):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2093)
12-07 01:14:58.047: W/System.err(1591):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
12-07 01:14:58.047: W/System.err(1591):     at android.app.ActivityThread.access$700(ActivityThread.java:135)
12-07 01:14:58.047: W/System.err(1591):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
12-07 01:14:58.047: W/System.err(1591):     at android.os.Handler.dispatchMessage(Handler.java:102)
12-07 01:14:58.047: W/System.err(1591):     at android.os.Looper.loop(Looper.java:137)
12-07 01:14:58.047: W/System.err(1591):     at android.app.ActivityThread.main(ActivityThread.java:4998)
12-07 01:14:58.047: W/System.err(1591):     at java.lang.reflect.Method.invokeNative(Native Method)
12-07 01:14:58.047: W/System.err(1591):     at java.lang.reflect.Method.invoke(Method.java:515)
12-07 01:14:58.047: W/System.err(1591):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-07 01:14:58.047: W/System.err(1591):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
12-07 01:14:58.047: W/System.err(1591):     at dalvik.system.NativeStart.main(Native Method)
12-07 01:14:58.027:W/System.err(1591):请求错误(400)
12-07 01:14:58.037:W/System.err(1591):位于org.jivesoftware.smackx.search.UserSearch.getSearchForm(UserSearch.java:84)
12-07 01:14:58.037:W/System.err(1591):位于org.jivesoftware.smackx.search.UserSearchManager.getSearchForm(UserSearchManager.java:73)
12-07 01:14:58.037:W/System.err(1591):位于com.afinity.core.chat.ChatManager.searchUser(ChatManager.java:107)
12-07 01:14:58.037:W/System.err(1591):位于com.afinity.chat.ui.Activity。(Activity.java:19)
12-07 01:14:58.037:W/System.err(1591):位于java.lang.Class.newInstanceImpl(本机方法)
12-07 01:14:58.047:W/System.err(1591):位于java.lang.Class.newInstance(Class.java:1208)
12-07 01:14:58.047:W/System.err(1591):位于android.app.Instrumentation.newActivity(Instrumentation.java:1061)
12-07 01:14:58.047:W/System.err(1591):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2093)
12-07 01:14:58.047:W/System.err(1591):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
12-07 01:14:58.047:W/System.err(1591):位于android.app.ActivityThread.access$700(ActivityThread.java:135)
12-07 01:14:58.047:W/System.err(1591):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
12-07 01:14:58.047:W/System.err(1591):位于android.os.Handler.dispatchMessage(Handler.java:102)
12-07 01:14:58.047:W/System.err(1591):位于android.os.Looper.loop(Looper.java:137)
12-07 01:14:58.047:W/System.err(1591):位于android.app.ActivityThread.main(ActivityThread.java:4998)
12-07 01:14:58.047:W/System.err(1591):位于java.lang.reflect.Method.invokenactive(本机方法)
12-07 01:14:58.047:W/System.err(1591):位于java.lang.reflect.Method.invoke(Method.java:515)
12-07 01:14:58.047:W/System.err(1591):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-07 01:14:58.047:W/System.err(1591):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
12-07 01:14:58.047:W/System.err(1591):在dalvik.System.NativeStart.main(本机方法)

我通过以下步骤解决此问题:

步骤1:在调用XMPPConnection的连接之前调用follow方法configure

步骤2:在调用登录后调用XMPPConnection的addConnectionListener和addPacketListener(确保XMPPConnection的isAuthenticated为true)

配置方法:

12-07 01:14:58.027: W/System.err(1591): bad-request(400)
12-07 01:14:58.037: W/System.err(1591):     at org.jivesoftware.smackx.search.UserSearch.getSearchForm(UserSearch.java:84)
12-07 01:14:58.037: W/System.err(1591):     at org.jivesoftware.smackx.search.UserSearchManager.getSearchForm(UserSearchManager.java:73)
12-07 01:14:58.037: W/System.err(1591):     at com.afinity.core.chat.ChatManager.searchUser(ChatManager.java:107)
12-07 01:14:58.037: W/System.err(1591):     at com.afinity.chat.ui.Activity.<init>(Activity.java:19)
12-07 01:14:58.037: W/System.err(1591):     at java.lang.Class.newInstanceImpl(Native Method)
12-07 01:14:58.047: W/System.err(1591):     at java.lang.Class.newInstance(Class.java:1208)
12-07 01:14:58.047: W/System.err(1591):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
12-07 01:14:58.047: W/System.err(1591):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2093)
12-07 01:14:58.047: W/System.err(1591):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
12-07 01:14:58.047: W/System.err(1591):     at android.app.ActivityThread.access$700(ActivityThread.java:135)
12-07 01:14:58.047: W/System.err(1591):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
12-07 01:14:58.047: W/System.err(1591):     at android.os.Handler.dispatchMessage(Handler.java:102)
12-07 01:14:58.047: W/System.err(1591):     at android.os.Looper.loop(Looper.java:137)
12-07 01:14:58.047: W/System.err(1591):     at android.app.ActivityThread.main(ActivityThread.java:4998)
12-07 01:14:58.047: W/System.err(1591):     at java.lang.reflect.Method.invokeNative(Native Method)
12-07 01:14:58.047: W/System.err(1591):     at java.lang.reflect.Method.invoke(Method.java:515)
12-07 01:14:58.047: W/System.err(1591):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-07 01:14:58.047: W/System.err(1591):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
12-07 01:14:58.047: W/System.err(1591):     at dalvik.system.NativeStart.main(Native Method)
public void configure(ProviderManager pm) {
    pm.addIQProvider("query", "jabber:iq:private",
            new PrivateDataManager.PrivateDataIQProvider());
    // Time
    try {
        pm.addIQProvider("query", "jabber:iq:time",
                Class.forName("org.jivesoftware.smackx.packet.Time"));
    } catch (Exception e) {
        e.printStackTrace();
    }
    // Roster Exchange
    pm.addExtensionProvider("x", "jabber:x:roster",
            new RosterExchangeProvider());
    // Message Events
    pm.addExtensionProvider("x", "jabber:x:event",
            new MessageEventProvider());
    // Chat State
    pm.addExtensionProvider("active",
            "http://jabber.org/protocol/chatstates",
            new ChatStateExtension.Provider());
    pm.addExtensionProvider("composing",
            "http://jabber.org/protocol/chatstates",
            new ChatStateExtension.Provider());
    pm.addExtensionProvider("paused",
            "http://jabber.org/protocol/chatstates",
            new ChatStateExtension.Provider());
    pm.addExtensionProvider("inactive",
            "http://jabber.org/protocol/chatstates",
            new ChatStateExtension.Provider());
    pm.addExtensionProvider("gone",
            "http://jabber.org/protocol/chatstates",
            new ChatStateExtension.Provider());
    // XHTML
    pm.addExtensionProvider("html", "http://jabber.org/protocol/xhtml-im",
            new XHTMLExtensionProvider());
    // Group Chat Invitations
    pm.addExtensionProvider("x", "jabber:x:conference",
            new GroupChatInvitation.Provider());

    pm.addIQProvider("query", "http://jabber.org/protocol/disco#items",
            new DiscoverItemsProvider());

    pm.addIQProvider("query", "http://jabber.org/protocol/disco#info",
            new DiscoverInfoProvider());
    // Data Forms
    pm.addExtensionProvider("x", "jabber:x:data", new DataFormProvider());
    // MUC User
    pm.addExtensionProvider("x", "http://jabber.org/protocol/muc#user",
            new MUCUserProvider());
    // MUC Admin
    pm.addIQProvider("query", "http://jabber.org/protocol/muc#admin",
            new MUCAdminProvider());
    // MUC Owner
    pm.addIQProvider("query", "http://jabber.org/protocol/muc#owner",
            new MUCOwnerProvider());
    // Delayed Delivery
    pm.addExtensionProvider("x", "jabber:x:delay",
            new DelayInformationProvider());
    // Version
    try {
        pm.addIQProvider("query", "jabber:iq:version",
                Class.forName("org.jivesoftware.smackx.packet.Version"));
    } catch (ClassNotFoundException e) {
        // Not sure what's happening here.
    }
    // VCard
    pm.addIQProvider("vCard", "vcard-temp", new VCardProvider());
    // Offline Message Requests
    pm.addIQProvider("offline", "http://jabber.org/protocol/offline",
            new OfflineMessageRequest.Provider());
    // Offline Message Indicator
    pm.addExtensionProvider("offline",
            "http://jabber.org/protocol/offline",
            new OfflineMessageInfo.Provider());
    // Last Activity
    pm.addIQProvider("query", "jabber:iq:last", new LastActivity.Provider());
    // User Search
    pm.addIQProvider("query", "jabber:iq:search", new UserSearch.Provider());
    // SharedGroupsInfo
    pm.addIQProvider("sharedgroup",
            "http://www.jivesoftware.org/protocol/sharedgroup",
            new SharedGroupsInfo.Provider());
    // JEP-33: Extended Stanza Addressing
    pm.addExtensionProvider("addresses",
            "http://jabber.org/protocol/address",
            new MultipleAddressesProvider());
    pm.addIQProvider("si", "http://jabber.org/protocol/si",
            new StreamInitiationProvider());
    pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams",
            new BytestreamsProvider());
    pm.addIQProvider("query", "jabber:iq:privacy", new PrivacyProvider());
    pm.addIQProvider("command", "http://jabber.org/protocol/commands",
            new AdHocCommandDataProvider());
    pm.addExtensionProvider("malformed-action",
            "http://jabber.org/protocol/commands",
            new AdHocCommandDataProvider.MalformedActionError());
    pm.addExtensionProvider("bad-locale",
            "http://jabber.org/protocol/commands",
            new AdHocCommandDataProvider.BadLocaleError());
    pm.addExtensionProvider("bad-payload",
            "http://jabber.org/protocol/commands",
            new AdHocCommandDataProvider.BadPayloadError());
    pm.addExtensionProvider("bad-sessionid",
            "http://jabber.org/protocol/commands",
            new AdHocCommandDataProvider.BadSessionIDError());
    pm.addExtensionProvider("session-expired",
            "http://jabber.org/protocol/commands",
            new AdHocCommandDataProvider.SessionExpiredError());

}