簡體   English   中英

Android Volley在設備上運行良好,但無法在模擬器中運行

[英]Android Volley works well on device but fail to work in emulator

我意識到凌空的事情很奇怪。 我在Android上測試了注冊功能。 最初,當我單擊按鈕時, 它始終沒有響應(沒有Toast,沒有錯誤提示) 但是,當我輸入日志並在運行應用程序時檢查logcat時,所有數據均已正確處理。 你猜怎么着? 當我將所有php文件上傳到服務器時,在Phone上安裝應用程序,即可正​​常運行!

好的,我關心的是它應該可以在Device上運行。 但是我只是想知道為什么在大多數情況下我將在Emulator上進行測試時,為什么它在Emulator中不起作用。

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;
}
}

有人以前有這個問題嗎?

我最近有一個類似的問題。 對我來說,解決方案是將服務器值從“ http:// localhost:8080 ”更改為“ http://192.168.1.x:8080 ”(工作站的靜態IP)。 在你的例子中,我看到你把

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

這顯然是一個隨機網址,所以我真的認為您正在做的事情與我最近所做的相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM