Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android URL不存在时google/volley应用程序崩溃_Android_Android Volley - Fatal编程技术网

Android URL不存在时google/volley应用程序崩溃

Android URL不存在时google/volley应用程序崩溃,android,android-volley,Android,Android Volley,所以我在我的应用程序中实现了google/volley。当我编写应用程序时,我不小心输入了错误的url地址,应用程序突然崩溃。那么我怎样才能避免这种问题呢。下面是我使用的代码 String url_login = "http://10.0.2.2/test_sstem/public/login"; //Send Post data and retrieve server respond StringRequest stringRequest = new StringReques

所以我在我的应用程序中实现了google/volley。当我编写应用程序时,我不小心输入了错误的url地址,应用程序突然崩溃。那么我怎样才能避免这种问题呢。下面是我使用的代码

String url_login = "http://10.0.2.2/test_sstem/public/login";

    //Send Post data and retrieve server respond
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url_login,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Toast.makeText(LoginActivity.this,"On Response "+response,Toast.LENGTH_LONG).show();
                    ValidateLogin(response);
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    NetworkResponse networkResponse = error.networkResponse;
                    if (networkResponse != null && networkResponse.data != null) {
                        String jsonError = new String(networkResponse.data);
                        String message_response=null;
                        try {
                            JSONObject object = new JSONObject(jsonError);
                            message_response= object.getString("error");
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                        Toast.makeText(LoginActivity.this, "On Error " + message_response.toString(), Toast.LENGTH_LONG).show();
                        showProgress(false);
                    }
                }
            })
字符串url\u登录=”http://10.0.2.2/test_sstem/public/login";
//发送Post数据并检索服务器响应
StringRequest StringRequest=新建StringRequest(Request.Method.POST、url\u登录、,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
Toast.makeText(LoginActivity.this,“On Response”+Response,Toast.LENGTH_LONG.show();
验证素(应答);
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
NetworkResponse NetworkResponse=error.NetworkResponse;
if(networkResponse!=null&&networkResponse.data!=null){
String jsonError=新字符串(networkResponse.data);
字符串消息_响应=null;
试一试{
JSONObject对象=新的JSONObject(jsonError);
message_response=object.getString(“错误”);
}捕获(JSONException e){
e、 printStackTrace();
}
Toast.makeText(LoginActivity.this,“On Error”+message_response.toString(),Toast.LENGTH_LONG.show();
显示进度(假);
}
}
})

我知道可以通过更正URL来修复此问题,但如果URL不存在,我们如何解决此问题呢。

您的应用程序因URL不正确而崩溃的原因有很多,其中之一可能是主机无法解析,您可以使用以下代码检查URL的有效性:

URLUtil.isValidUrl(url)

我使用了贝娄截击法,这对我来说很有效。。我使用了错误的地址,但我的应用程序没有停止。使用下面的完整方法

private void doLoginAction() {

    pDialog.show();
    String url_login = "http://10.0.2.2/test_sstem/public/login";


    StringRequest stringRequest = new StringRequest(Request.Method.POST, url_login,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    //pDialog.dismiss();


                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        JSONArray loginNodes = jsonObject.getJSONArray("ParentNode");
                        for (int i = 0; i < loginNodes.length(); i++) {
                            JSONObject jo = loginNodes.getJSONObject(i);
                            String key1 = jo.getString("key1");
                            String key2 = jo.getString("key2");



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


                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    pDialog.dismiss();
                    try {

                        if (error instanceof TimeoutError ) {
                            //Time out error

                        }else if(error instanceof NoConnectionError){
                            //net work error

                        } else if (error instanceof AuthFailureError) {
                            //error

                        } else if (error instanceof ServerError) {
                            //Erroor
                        } else if (error instanceof NetworkError) {
                            //Error

                        } else if (error instanceof ParseError) {
                           //Error

                        }else{
                            //Error
                        }
                        //End


                    } catch (Exception e) {


                    }

                }
            }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            params.put("uname", "era@gmail.com");
            params.put("pass", "123456");



            return params;
        }

    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
}
private void doLoginAction(){
pDialog.show();
字符串url\u登录=”http://10.0.2.2/test_sstem/public/login";
StringRequest StringRequest=新建StringRequest(Request.Method.POST、url\u登录、,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
//pDialog.disclose();
试一试{
JSONObject JSONObject=新JSONObject(响应);
JSONArray loginNodes=jsonObject.getJSONArray(“父节点”);
对于(int i=0;i
你能发布堆栈吗?@Vyacheslav你所说的堆栈术语是什么意思?我真的不知道我的意思是android studio的logcatdude中显示的崩溃时刻的堆栈跟踪我尝试了那些OneRorResponse块,它确实起了作用,非常感谢。是的,url没有被laravel api路由,它导致应用程序崩溃。但是你给出的方法更多的是检查url格式是否正确。