Android と Windows で、Java を使用してサーバー クライアント アプリケーションを作成しています。確認のためにユーザーの情報 (ユーザー名とパスワード) をサーバーに送信したいと考えています。クライアントは情報を含むオブジェクトを送信しますが、サーバーはそれを受け取りません! オブジェクトクラスは次のとおりです。
package Model;
import java.io.Serializable;
public class StringObject implements Serializable {
private static final long serialVersionUID = 1L;
private String Username=null;
private String Password=null;
public void setPassword(String Password){
this.Password=Password;
}
public void setUsername(String Username){
this.Username=Username;
}
public String getPassword(){
return Password;
}
public String getUsername(){
return Username;
}
}
クライアントコード:
private void Login(){
try {
ObjectOutputStream OutObj=new ObjectOutputStream(newBufferedOutputStream(connection.getOutputStream()));
OutObj.writeObject(UserPass);
OutObj.flush();
} catch (IOException e) {
Log.d("Application: ",e.toString());}
(この行の前に Object 変数を設定しました)
およびサーバーコード:
ObjectInputStream inObj = new ObjectInputStream(new BufferedInputStream(connection.getInputStream()));
UserPass=(StringObject) inObj.readObject();
System.out.println("UserName: " + UserPass.getUsername());
System.out.println("Password: " + UserPass.getPassword());
クライアント プログラム (アンドロイド) がエラーでクラッシュします: キャッチされていない例外でスレッドが終了します。(ソケットと I/O コード行は別のスレッドにあります)
07-15 12:43:59.626: W/dalvikvm(1306): threadid=13: thread exiting with uncaught exception (group=0x40a71930)
07-15 12:43:59.626: E/AndroidRuntime(1306): FATAL EXCEPTION: Thread-89
07-15 12:43:59.626: E/AndroidRuntime(1306): java.lang.NullPointerException
07-15 12:43:59.626: E/AndroidRuntime(1306): at com.shayan.filesharing.ConnectionThread.Login(ConnectionThread.java:90)
07-15 12:43:59.626: E/AndroidRuntime(1306): at com.shayan.filesharing.ConnectionThread.ProcessMessage(ConnectionThread.java:70)
07-15 12:43:59.626: E/AndroidRuntime(1306): at com.shayan.filesharing.ConnectionThread.run(ConnectionThread.java:47)
しかし、ObjectOutputStream
/ObjectInputStream
をBufferedWriter
/に置き換えると、bufferedReader
正常に動作します! なぜこれが起こるのか誰か教えてもらえますか?