2017-12-24 12 views
-1

私は、リクエストを受け入れ、(wampを介して)ローカルデータベースに保存するためにEclipseでtomcatサーバーを使用している春のブートアプリケーションを実行しています。アンドロイドをクライアントとして使用すると、ユーザー入力から取得したjsonオブジェクトとしてログイン要求を送信したいのですが、ログインボタンを押すとエミュレータアプリケーションがクラッシュします。 (私は2つの以上のクラスがありますUserDAOとユーザー(整数としてスコア)とモデルクラス)私のEclipse TomcatサーバーとAndroidを接続してください

これは私のアンドロイドログイン活動である:これはを通じてのTomcatサーバーで要求を処理するための私のコントローラである

package com.example.mujtaba.quizzer; 

import android.app.ProgressDialog; 
import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.Spinner; 
import android.widget.TextView; 

import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.VolleyLog; 
import com.android.volley.toolbox.StringRequest; 
import com.example.mujtaba.quizzer.Activity.QuizMaking; 
import com.example.mujtaba.quizzer.Activity.QuizTaking; 

import org.w3c.dom.Text; 

import java.util.HashMap; 
import java.util.Map; 

public class Login extends AppCompatActivity { 
    private Button button; 
    private TextView username; 
    private TextView password; 
    private Spinner role; 
    private String url = "http://localhost:8080/users/signup"; 
    private RequestQueue queue; 
    private ProgressDialog progress; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 

     username=(TextView) findViewById(R.id.username); 
     password=(TextView) findViewById(R.id.password); 
     button=(Button) findViewById(R.id.button); 
     role = (Spinner) findViewById(R.id.role); 

// Create an ArrayAdapter using the string array and a default spinner layout 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
       R.array.role_spinner, android.R.layout.simple_spinner_item); 
// Specify the layout to use when the list of choices appears 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
// Apply the adapter to the spinner 
     role.setAdapter(adapter); 
    } 


    public void Quiz(View v) { //select a new activity on the basis of role 




     StringRequest MyStringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       //This code is executed if the server responds, whether or not the response contains data. 
       //The String 'response' contains the server's response. 
      } 
     }, new Response.ErrorListener() { //Create an error listener to handle errors appropriately. 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       //This code is executed if there is an error. 
      } 
     }) { 
      protected Map<String, String> getParams() { 
       Map<String, String> MyData = new HashMap<String,String>(); 
       MyData.put("Username", username.getText().toString()); //Add the data you'd like to send to the server. 
       MyData.put("Password",password.getText().toString()); 
       MyData.put("Role",role.getSelectedItem().toString()); 
       MyData.put("Score","0"); 
       return MyData; 
      } 
     }; 

     queue.add(MyStringRequest); 
    } 
} 

日食:

package com.nust.QuizApplication.controller; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestBody; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 

import com.nust.QuizApplication.dao.UserDAO; 
import com.nust.QuizApplication.model.User; 

@Controller 
@RequestMapping(value = "/users", produces = "application/json") 
public class UserController { 
    @Autowired 
    private UserDAO userDao; 


    @RequestMapping(value = "/signup" ,method = RequestMethod.POST, consumes = "application/json") 
    @ResponseBody 
    public int create(@RequestBody User user) { 
     int id = userDao.signupUser(user); 
     if(id>0) 
      return id; 
     else 
      return 0; 
    } 


    @RequestMapping(value = "/signin",method = RequestMethod.POST, consumes = "application/json") 
    @ResponseBody 
    public boolean signinUser(@RequestBody User user) { 
     boolean check = userDao.signinUser(user); 
     if(check==true) 
      return true; 
     else 
      return false; 
    } 

} 

Logcat(This is incompletely shown in the image:Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.android.volley.Request com.android.volley.RequestQueue.add(com.android.volley.Request)' on a null object reference)

+0

logcatにはどのようなエラーがありますか? – jayeshsolanki93

+0

クラッシュの原因は次のうちどれですか?お願いします。 – greenapps

+0

が更新しました。 theresはlogcatイメージへのリンク@greenapps –

答えて

0
private RequestQueue queue; 

これは初期化されていない変数です。 NULL値を持つポインター。したがって

queue.add(MyStringRequest); 

null.add(MyStringRequest); 

に等しく、それは `NullPointerExceptionが」原因となります。

したがって、使用する前に変数を初期化してください。

関連する問題