在android中使用Asmack时出现404错误
Posted
技术标签:
【中文标题】在android中使用Asmack时出现404错误【英文标题】:404 error while using Asmack in android 【发布时间】:2012-02-08 11:41:58 【问题描述】:在我的应用程序中,我正在尝试使用 smack 库访问在服务器上创建的节点。当我在 java 中运行代码时,它不会给我任何错误。但是当我当时使用 android 项目尝试相同的操作时 lo-gin是成功的,但在访问节点时它给了我错误 404。
我在构建路径中添加了 Asmack jar 文件。请帮助我...我卡住了...
public class ChatApplicationActivity extends Activity
/** Called when the activity is first created. */
static XMPPConnection connection;
TextView textView;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView=(TextView)findViewById(R.id.textView);
try
ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", new VCardProvider());
ConnectionConfiguration cc = new ConnectionConfiguration("192.168.1.113", 5222, "192.168.1.113");
connection = new XMPPConnection(cc);
connection.connect();
SASLAuthentication.supportSASLMechanism("PLAIN", 0);
connection.login("test","test");
Log.i("debug", "login success");
// MySmackClient client=new MySmackClient();
// client.login("test1","test1");
//client.displayBuddyList();
// CreateNode node = new CreateNode(connection);
subNode("test@eze-dem-113","testNode5");
// String talkTo = br.readLine();
System.out.println("-----");
// System.out.println("All messages will be sent to " + talkTo);
System.out.println("Enter your message in the console:");
System.out.println("-----\n");
catch (XMPPException e)
e.printStackTrace();
public void subNode(String JID,String nodeName)
PubSubManager mgr = new PubSubManager(connection);
// String pubSubAddress = "pubsub." + connection.getServiceName();
// PubSubManager manager = new PubSubManager(connection, pubSubAddress);
try
// Get the node
// Node eventNode = manager.getNode("testNode5"); //i always get error here
LeafNode node = (LeafNode)mgr.getNode(nodeName);
node.addItemEventListener(new ItemEventCoordinator());
node.subscribe(JID);
catch (XMPPException e)
e.printStackTrace();
class ItemEventCoordinator implements ItemEventListener
int track =0;
public void handlePublishedItems(ItemPublishEvent items)
System.out.println("Got Publish:"+track);
PayloadItem<SimplePayload> item = (PayloadItem<SimplePayload>) items.getItems().get(0);
SimplePayload payload = item.getPayload();
String payloadData = payload.toXML();
System.out.println(payloadData);
【问题讨论】:
与答案相关的问题:***.com/a/10881849/842697 【参考方案1】:您使用的是什么版本的 Smack。我不认为 asmack 正在维护,所以它可能与 Smack 不同步。
一个建议是改变
PubSubManager mgr = new PubSubManager(connection);
对于您已注释掉的行
String pubSubAddress = "pubsub." + connection.getServiceName();
PubSubManager manager = new PubSubManager(connection, pubSubAddress);
Smack 已更改为默认为该 pubsub 地址,asmack 可能没有该更改。如果您使用更显式的构造函数,它将在两种环境中保持一致。
【讨论】:
对于 googlecode 上的 aSmack 的替代品,另请参阅这个问题 ***.com/questions/4769020/…以上是关于在android中使用Asmack时出现404错误的主要内容,如果未能解决你的问题,请参考以下文章
from.createForm() 在使用 asmack for android 时产生错误
在生产环境中使用 Rails 7 中的 importmaps 时出现 404 错误
在 TextBlob 中使用翻译功能时出现“HTTPError:HTTP 错误 404:未找到”