2016-03-12 46 views
3

錯誤「NetworkDispatcher.run:未處理的異常java.lang.NullPointerException:嘗試調用虛擬方法」 int java.lang.String.length()'「」 UI包含兩個密碼編輯文本字段和一個按鈕,我用它來保存用戶輸入到服務器的密碼。但是當我點擊提交按鈕時,上述錯誤由StringRequest的onErrorResponce函數顯示。下面的 是將密碼保存到服務器的代碼。使用Volley錯誤發佈數據發生「NetworkDispatcher.run:未處理的異常java.lang.NullPointerException:嘗試調用虛擬方法」

private void savePasswordToServer() {//pass1&pass are two edittext field objects 
     if(pass1.getText().toString().equals(pass.getText().toString())) 
     { 
      String url = new URLConstants().BaseURL+"save_password.php"; 
      StringRequest request = new StringRequest(Request.Method.POST, url,new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        try 
        { 
         JSONObject jsonObject = new JSONObject(response); 
         boolean e = jsonObject.getBoolean("error"); 
         if(!e) 
         { 
          Toast.makeText(getApplicationContext(), "password change successful", Toast.LENGTH_SHORT).show(); 
          Intent intent = new Intent(getApplicationContext(),HomeScreen.class); 
          startActivity(intent); 
         } 
         else 
          Toast.makeText(getApplicationContext(),jsonObject.getString("error_details"),Toast.LENGTH_LONG).show(); 
        }catch (JSONException e) 
        { 
         Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_LONG).show(); 
        } 
       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Toast.makeText(getApplicationContext(),"error VOLLEY "+error.getMessage(),Toast.LENGTH_LONG).show(); 
       } 
      }) 
      { 
       @Override 
      public Map<String, String> getParams() 
       { 
        Map<String, String> params = new HashMap<String, String>(); 
        params.put("rollno",rollno); 
        params.put("password",pass1.getText().toString()); 
        return params; 
       } 
      }; 
      MySingleton.getInstance(this).addToRequestQueue(request); 
     } 
     else 
     { 
      pass1.setError("wrong password"); 
      return; 
     } 
} 

及以下的AndroiMonitor

產生錯誤
03-12 11:35:55.020 2742-2803/? E/Volley: [155] NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference 
            java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference 
             at libcore.net.UriCodec.encode(UriCodec.java:132) 
             at java.net.URLEncoder.encode(URLEncoder.java:57) 
             at com.android.volley.Request.encodeParameters(Request.java:413) 
             at com.android.volley.Request.getBody(Request.java:399) 
             at com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:236) 
             at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:210) 
             at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:106) 
             at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:93) 
             at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:105) 

請幫我

+0

你能顯示url的值嗎? –

+0

Baseuri =「http://10.0.2.2:80/po/」作爲即時通訊從模擬器訪問本地主機的IP地址是10.0.2.2,完整的URI是「http://10.0.2.2:80/po/save_password .PHP」。我可以訪問其他的PHP腳本沒有錯誤,但只爲了這個錯誤顯示。 – hemanth5636

回答

0

我看來,像你

error.getMessage() 

爲空。

與下面的代碼嘗試在你的錯誤響應

if(error!=null && error.getMessage() !=null){ 
    Toast.makeText(getApplicationContext(),"error VOLLEY "+error.getMessage(),Toast.LENGTH_LONG).show(); 
} 
else{ 
    Toast.makeText(getApplicationContext(),"Something went wrong",Toast.LENGTH_LONG).show(); 

} 

看看這個作品,讓我知道。如果它不能深入研究這個問題。

一個更possiblility是

jsonObject.getString("error_details") 

爲空或空。

+1

嘿,謝謝你,但我仍然面臨同樣的錯誤「錯誤凌空+」 – hemanth5636

+1

日誌是一樣的嗎? –

+0

yha同樣我認爲,下面是新鮮的日誌 – hemanth5636

相關問題