2011-07-13 31 views
5

Tôi đang cố triển khai một trình nhắn tin đơn giản trên Android bằng cách sử dụng thư viện asmack. Dưới đây là các mã:(a) Smack trả về lỗi "dịch vụ không khả dụng (503)" khi đăng nhập()

public boolean login() 
{ 
    if (connection != null && connection.isConnected()) 
    { 
     Log.i("XMPP", connection.getHost()); 
     try 
     { 
      connection.login(USERNAME, PASSWORD); 
     } 
     catch (XMPPException e) 
     { 
      e.printStackTrace(); 
      return false; 
     } 
     return true; 
    } 
    return false; 
} 

Exception tôi nhận được sau khi connection.login() (kết nối có vẻ tốt đẹp):

service-unavailable(503) 
at org.jivesoftware.smack.NonSASLAuthentication.authenticate(NonSASLAuthentication.java:77) 
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:239) 
at org.jivesoftware.smack.Connection.login(Connection.java:353) 
at com.someapp.networking.XMPPMessenger.login(XMPPMessenger.java:60) 
at com.someapp.XMPPService.onCreate(XMPPService.java:33) 
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2780) 
at android.app.ActivityThread.access$3200(ActivityThread.java:119) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1917) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4363) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
at dalvik.system.NativeStart.main(Native Method) 

gì có thể là sai lầm?

+0

Bạn có thể vui lòng thêm chi tiết khác không? bạn đang cố gắng kết nối với máy chủ nào, bạn có chắc chắn chỉ định đúng cổng/tên miền/máy chủ không? dịch vụ không có sẵn thường có nghĩa là nó có thể đạt được hoặc bạn đã chỉ định thông tin sai. – Guillaume

Trả lời

1

Asmack có thể thiết lập kết nối mới với máy chủ nhưng nó rơi vào Non-SASL mode vì một số lý do (Cuộc gọi của NonSASLAuthentication.authenticate(NonSASLAuthentication.java:77)). Tôi nghĩ rằng đó là những gì máy chủ đang cố gắng cho bạn biết với câu trả lời "" dịch vụ không khả dụng (503) ", là nó không hỗ trợ xác thực Non-SASL.

Cố gắng gỡ lỗi tại sao smack không thử xác thực SASL.

Lưu ý: Các dòng trong trình xem nguồn smack hơi lệch vì tắt các phiên bản khác nhau và các bản vá từ asmack.

+0

những gì có thể là giải pháp cho điều này, chúng ta cần phải xác thực người dùng facebook và lấy danh sách bạn bè và gửi tin nhắn cho họ nhưng chúng tôi không thể loggin vì chúng tôi đang nhận được lỗi xác thực –

+0

điều này nhận được sau một số lần như nội dung thư? Điều gì có thể là vấn đề ? –

1

Đó là làm việc cuối cùng cho tôi bằng cách này:

ConnectionConfiguration connConfig = new ConnectionConfiguration(host,port,host); 
connection = new XMPPConnection(connConfig); 
connConfig.setSASLAuthenticationEnabled(true); 
connection.connect(); 
connection.login(userID, password); 

Tôi đã sử dụng Android sử dụng Asmack thư viện mà tôi đã tải về từ bên dưới URL:

https://code.google.com/p/asmack/downloads/detail?name=asmack-2010.05.07.jar

Hãy cẩn thận về userID.

Thay vì sử dụng

connection.login("[email protected]",password) 

đó là công việc đối với tôi chỉ khi tôi sử dụng connection.login ("username", mật khẩu);

Chúc may mắn ...

Các vấn đề liên quan