2016-08-13 21 views
3

私はSOに関するすべての同様の質問を見ました。私はこのエラーを解決しようとしましたが、失敗しました。私はほとんどすべてを試しましたが、解決策は得られません。次のようにエラー:org.json.JSONException:型java.lang.Stringの値<brはJSONObjectに変換できません

私のコードは次のとおりです。 -

public class Tab2 extends Fragment { 

private static String TAG = Tab2.class.getSimpleName(); 
private EditText editText1,editText2,editText3; 
private Button button; 
private String name,email,password; 
private TextInputLayout inputLayoutName, inputLayoutEmail, inputLayoutPassword; 
private ProgressDialog pDialog; 
private SessionManager session; 
private database db; 
static InputStream is = null; 
static JSONObject jObj = null; 
static String json = null; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.tab2,container,false); 

    pDialog = new ProgressDialog(getActivity()); 
    pDialog.setCancelable(false); 

    // Session manager 
    session = new SessionManager(getActivity()); 

    // SQLite database handler 
    db = new database(getActivity()); 

    // Check if user is already logged in or not 
    if (session.isLoggedIn()) { 
     // User is already logged in. Take him to main activity 
     Intent intent = new Intent(getActivity(),MainActivity.class); 
     startActivity(intent); 
    } 


    editText1 = (EditText)view.findViewById(R.id.name); 
    editText2 = (EditText)view.findViewById(R.id.email); 
    editText3 = (EditText)view.findViewById(R.id.password); 
    inputLayoutEmail = (TextInputLayout)view. findViewById(R.id.view1); 
    inputLayoutPassword = (TextInputLayout)view. findViewById(R.id.view2); 
    inputLayoutName = (TextInputLayout)view. findViewById(R.id.view3); 

    button = (Button)view.findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view1) { 

      name = editText1.getText().toString().trim(); 
      email = editText2.getText().toString().trim(); 
      password = editText3.getText().toString().trim(); 

      if (!validateName() || !validateEmail() || !validatePassword()) { 
       Log.d(TAG, "Successfull"); 
       return; 
      } 
       try { 
        new Thread(new Runnable() { 
         @Override 
         public void run() { 
          registerUser(name, email, password); 
         } 
        }).start(); 
       }catch (NullPointerException e){ 
        e.printStackTrace(); 
       } 


      Toast.makeText(getActivity(), "Account Created Successfully!", Toast.LENGTH_SHORT).show(); 
      Intent i = new Intent(getActivity(), MainActivity.class); 
      startActivity(i); 
     } 



    }); 



    return view; 
} 
public boolean validateName(){ 

    if(name.isEmpty()) { 
     inputLayoutName.setError(getString(R.string.error_name1)); 
     return false; 
    } 
    else if(name.length()<3){ 
     inputLayoutName.setError(getString(R.string.error_name2)); 
     return false; 
    } 
    else 
     inputLayoutName.setErrorEnabled(false); 
    return true; 
} 
public boolean validateEmail(){ 

    if(email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()){ 
     inputLayoutEmail.setError(getString(R.string.error_email)); 
     return false; 
    } 
    else 
     inputLayoutEmail.setErrorEnabled(false); 
    return true; 
} 
public boolean validatePassword(){ 

    if(password.isEmpty()){ 
     inputLayoutPassword.setError(getString(R.string.error_password1)); 
     return false; 
    } 
    else if(password.length()<4){ 
     inputLayoutPassword.setError(getString(R.string.error_password2)); 
     return false; 
    } 
    else 
     inputLayoutPassword.setErrorEnabled(false); 
    return true; 
} 


public void registerUser(final String name, final String email, final String password){ 

    String req = "req_request"; 
    pDialog.setMessage("Registering ..."); 
    showDialog(); 

    RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 
    StringRequest strReq = new StringRequest(Request.Method.POST, appConfig.url_sign, new Response.Listener<String>(){ 

     @Override 
     public void onResponse(String response) { 
      try { 


       JSONObject jObj = new JSONObject(response); 
       boolean error = jObj.getBoolean("error"); 
       Log.d(TAG,name + " " + email + " " + password); 
       if (!error) { 
        String uid = jObj.getString("uid"); 
        JSONObject user = jObj.getJSONObject("user"); 
        String name = user.getString("name"); 
        String email= user.getString("email"); 
        String created_at = user.getString("created_at"); 
        db.addUser(name, email, uid, created_at); 

        Toast.makeText(getActivity(), "User successfully registered. Try login now!", Toast.LENGTH_LONG).show(); 
        // Launch login activity 
        Intent i = new Intent(
          getActivity(), 
          Login.class); 
        startActivity(i); 


       } 
       else { 
        String errorMsg = jObj.getString("error_msg"); 
        Toast.makeText(getActivity(), 
          errorMsg, Toast.LENGTH_LONG).show(); 
       } 




      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      NetworkResponse networkResponse = error.networkResponse; 
      if (networkResponse != null) { 
       Log.e("Volley", "Error. HTTP Status Code:"+networkResponse.statusCode); 
      } 
      if (error instanceof TimeoutError) { 
       Log.e("Volley", "TimeoutError"); 
      }else if(error instanceof NoConnectionError){ 
       Log.e("Volley", "NoConnectionError"); 
      } else if (error instanceof AuthFailureError) { 

       Log.e("Volley", "AuthFailureError"); 
      } else if (error instanceof ServerError) { 
       Log.e("Volley", "ServerError"); 
      } else if (error instanceof NetworkError) { 
       Log.e("Volley", "NetworkError"); 
      } else if (error instanceof ParseError) { 
       Log.e("Volley", "ParseError"); 
      } 
      //Log.e(TAG, "Registration Error: " + error.getMessage()); 
     // Toast.makeText(getActivity(), 
      //   error.getMessage(), Toast.LENGTH_LONG).show(); 
      // hideDialog(); 

     } 
    }) { 
     @Override 
     protected Map<String, String> getParams() { 
      // Posting params to register url 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("name", name); 
      params.put("email", email); 
      params.put("password", password); 

      return params; 
     } 

    }; 

    int socketTimeout = 10000;//30 seconds - change to what you want 
    RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); 
    strReq.setRetryPolicy(policy); 

    requestQueue.add(strReq); 
} 
private void showDialog() { 

    if (!pDialog.isShowing()) 
     pDialog.show(); 
} 

private void hideDialog() { 
    if (pDialog.isShowing()) 
     pDialog.dismiss(); 
} 
} 

これは私のPHPファイルである

<?php 
$response = array(); 
if (isset($_POST['name']) && isset($_POST['email']) && isset ($_POST['password'])) 
{ 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $password = $_POST['password']; 


require_once __DIR__ . '/db_connection.php'; 
$db = new DB_CONNECT(); 
$result = mysql_query("Insert into words(name,email,password) values('$name','$email','$password')"); 

if ($result) 
{ 
    $response["success"] = 1; 
    $response["message"] = "Registration successfully."; 
    echo json_encode($response); 
} 
else 
{ 
    $response["success"] = 0; 
    $response["message"] = "Oops! An error occurred."; 
    echo json_encode($response); 
} 
} 

else 
{ 
    $response["success"] = 0; 
    $response["message"] = "Required field(s) is missing"; 
    echo json_encode($response); 
    } 
?> 

私のJSON応答は次のとおりです。 -

{"success":0,"message":"Required field(s) is missing"} 

エラーを識別することができます教えてください私。

答えて

0

You can print your response through programming, i am sure your response is not same as what ever you post

0

@Kartikeyaガーグ、あなたはAPIからHTML応答またはエラーを取得することができる、とあなたはJSONオブジェクトにこれらの応答を変換しようとしている、あなたの応答は有効なJSONを持っていません。

あなたは郵便配達でそれを試すことができます、あなたはそれをクロームにインストールすることができます。 APIからの応答を直接得ることができます。実際に何を得ているのですか

関連する問題