Android Volley在设备上运行良好但无法在模拟器中运行

时间:2016-09-15 04:08:08

标签: android android-volley

我意识到排球很奇怪。我测试了Android上的寄存器功能。最初,当我点击按钮时,始终没有响应(没有Toast,没有错误提示)。但是当我在运行应用程序时输入Log并检查logcat时,所有数据都已正确处理。你猜怎么着?当我将所有的PHP文件上传到服务器,在手机上安装应用程序,它的工作完美!

对,我关心的是它应该在Device上运行。但我只是想知道为什么它不能在模拟器中工作,因为大部分时间我都会在模拟器上进行测试。

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

public class register_request extends 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 个答案:

答案 0 :(得分:0)

我最近遇到了类似的问题。对我来说,解决方案是从&#34; http://localhost:8080&#34;更改服务器值。到&#34; http://192.168.1.x:8080&#34; (我的工作站的静态IP)。在你的例子中,我看到你把

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

这显然是一个随机的网址,所以我真的认为你做了我最近做的事情。