2017-12-24 3 views
-1

요청을 받아들이고 그들을 (wamp를 통해) 내 로컬 데이터베이스에 저장하기 위해 Eclipse에서 Tomcat 서버로 봄 부팅 애플리케이션을 실행 중입니다. 클라이언트로 안드로이드를 사용하여 사용자 입력에서 얻은 json 개체로 로그인 요청을 보내려고하지만 로그인 단추를 누르면 내 에뮬레이터 응용 프로그램이 충돌합니다. (I 두 가지 이상의 클래스가 있습니다 UserDAO 및 사용자 (정수로 점수)와 모델 클래스)내 이클립스 톰캣 서버와 안드로이드를 연결하십시오

이 내 안드로이드 로그인 활동이 통해 바람둥이 서버에서 요청을 처리하기위한 내 컨트롤러

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; 

이것은 초기화되지 않은 변수입니다. 널값을 갖는 포인터. 따라서

queue.add(MyStringRequest); 

null.add(MyStringRequest); 

같습니다 그리고는`NullPointerException이 '됩니다.

그래서 변수를 사용하기 전에 초기화하십시오.

관련 문제