首页 > 解决方案 > volley.NoConnectionError

问题描述

我正在开发一个 Android 应用程序,目前坚持使用 volley 将我的数据库链接到我的应用程序进行注册,但我遇到了问题:这是响应:

com.android.volley.NoConnectionError:java.io.IOEXCEPTION: 不允许到 10.0.2.2 的明文 HTTP 流量

这是我的 MainActivity 代码:

public class MainActivity extends AppCompatActivity {

        Button loginBtn;
        EditText password, username;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        password = findViewById(R.id.pssword);
        username = findViewById(R.id.username);
        loginBtn = findViewById(R.id.check);

        loginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                login();
            }
        });
    }

    void login() {
        StringRequest request = new StringRequest(Request.Method.POST, 
            "http://10.0.2.2:80/android/test.php", new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Toast.makeText(getApplicationContext(), "this is response: " + response, 
                Toast.LENGTH_SHORT).show();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getApplicationContext(), "this is response: " + error, 
                Toast.LENGTH_SHORT).show();
            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("username", "hicham");
                params.put("password", "hello");

                return params;
            }
        };
        Volley.newRequestQueue(this).add(request);
    }
}

标签: javaandroidandroid-volley

解决方案


请相应地在您的 AndroidManifest.xml 中添加 usesCleartextTraffic="true" 标记以解决此问题。

 <application
    
    android:usesCleartextTraffic="true"

 </application>

出现此问题是因为您尝试访问 http url 而不是 https,并且最近对此有新的限制。因此,只有在添加了我提到的标签之后,您的 HTTP 请求才会起作用。

快乐编码!:)


推荐阅读