2016-09-15 3 views
0

나는 발리에 대해 아주 이상한 것을 깨닫습니다. Android에서 등록 기능을 테스트합니다. 처음에 버튼을 클릭하면 항상 응답이 없습니다 (토스트가없고 오류 프롬프트가 표시되지 않음). 그러나 내가 로그에 넣고 응용 프로그램을 실행할 때 logcat을 체크인하면 모든 데이터가 올바르게 처리됩니다. 그리고 어떻게 됐을 까? 내 모든 PHP 파일을 서버에 업로드 할 때 Phone에 앱을 설치하면 완벽하게 작동합니다!Android Volley는 기기에서 제대로 작동하지만 에뮬레이터에서 작동하지 않습니다.

오른쪽에서, 내가 신경 쓰는 것은 장치에서 작동해야한다는 것입니다. 하지만 에뮬레이터에서 테스트 할 때 대부분의 시간 동안 에뮬레이터에서 왜 작동하지 않는지 궁금합니다.

Main4Activity.java

public class Main4Activity extends AppCompatActivity { 

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

    final EditText username=(EditText)findViewById(R.id.username); 
    final EditText email=(EditText)findViewById(R.id.email); 
    final EditText password=(EditText)findViewById(R.id.password); 

    final Button submit=(Button)findViewById(R.id.submit); 
    submit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      final String get_username=username.getText().toString(); 
      final String get_email=email.getText().toString(); 
      final String get_password=password.getText().toString(); 

      Log.d("username","->"+get_username); 
      Log.d("email","->"+get_email); 
      Log.d("password","->"+get_password); 

      Response.Listener<String> response_listener=new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        try{ 
         JSONObject jsonObject=new JSONObject(response); 
         boolean success=jsonObject.getBoolean("success"); 

         if(success){ 

          Toast.makeText(Main4Activity.this,"Reg Done!",Toast.LENGTH_SHORT).show(); 
         }else{ 
          Toast.makeText(Main4Activity.this,"Reg FAILED!",Toast.LENGTH_SHORT).show(); 

         } 

        }catch(JSONException e){ 
         e.printStackTrace();; 

        } 
       } 
      }; 
      register_request register_request=new register_request(get_username,get_email,get_password,response_listener); 
      RequestQueue queue=Volley.newRequestQueue(Main4Activity.this); 
      queue.add(register_request); 
     } 
    }); 
} 
} 

register_request.java

공용 클래스 register_request는 StringRequest {

private static final String url="http://abcdefg.com"; 
private Map<String,String> params; 
public register_request(String username,String email,String password, Response.Listener<String> listener) { 
    super(Method.POST,url, listener, null); 
    params=new HashMap<>(); 
    params.put("username",username); 
    params.put("email",email); 
    params.put("password",password); 
} 

@Override 
public Map<String, String> getParams() { 
    return params; 
} 
} 

누구든지 전에이 문제가 확장?

+1

오류 수신기를 설치하지 않았기 때문에 오류가 표시되지 않습니다. 또한 클래스 이름에 작은 글자를 사용하지 마십시오. – Enzokie

답변

0

나는 최근에 비슷한 문제가있었습니다. 저에게 해결책은 서버 값을 "http://localhost:8080"에서 "http://192.168.1.x:8080"(내 워크 스테이션의 정적 IP)으로 변경하는 것입니다. 귀하의 예제에서 나는 당신이 분명히 임의의 URL 인

private static final String url="http://abcdefg.com"; 

를 넣어보고, 그래서 나는 정말 당신은 내가 최근에하고 있던 같은 일을하고 있다고 생각.

관련 문제