2016-05-15 8 views
1

私はPHP Webサービスを使用してログインページを作成しています。しかし、JSONレスポンスでは、メインのJSON(check this link)の外に文字列があります。このlinkを参考にして解析しようとしましたが、このJSONエラーが発生しています。誰でもこのJSONを解析して、ボレーのリクエストに役立つことができますか?あなたはJSONオブジェクトとして文字列全体を変換しようとしていると、それを行うことができないためである文字列型のjsonエラー値をjsonobjectに変換できません

public class MainActivity extends AppCompatActivity { 
 

 
    private EditText username, password; 
 
    private Button login; 
 

 
    private static final String LOGIN = "http://demo.example.net/login.php"; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 

 
     username = (EditText)findViewById(R.id.ET1); 
 
     password = (EditText)findViewById(R.id.ET2); 
 
     login = (Button)findViewById(R.id.btn); 
 
     login.setOnClickListener(new View.OnClickListener() { 
 
      @Override 
 
      public void onClick(View v) { 
 
       String name = username.getText().toString(); 
 
       String pass = password.getText().toString(); 
 

 
       if(!name.isEmpty() && !pass.isEmpty()){ 
 
        attemptlogin(); 
 
       } 
 
      } 
 
     }); 
 
    } 
 

 
    private void attemptlogin() { 
 

 
     StringRequest stringRequest = new StringRequest(Request.Method.POST, LOGIN, 
 
       new Response.Listener<String>() { 
 
        @Override 
 
        public void onResponse(String response) { 
 

 
         Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show(); 
 

 
         try { 
 
          JSONObject jObj = new JSONObject(response); 
 

 
          JSONObject phone = jObj.getJSONObject("testtest123"); 
 

 
          String status = phone.getString("success"); 
 

 
          // Now check status value 
 
          if (status.equals("0")) { 
 
           Toast.makeText(getApplicationContext(), "There was some error! Please try again.", Toast.LENGTH_LONG).show(); 
 
          } else if (status.equals("1")) { 
 

 
           Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_LONG).show(); 
 

 

 

 
          // startActivity(new Intent(getApplicationContext(), SecondActivity.class)); 
 
          // finish(); 
 

 

 

 
          } else { 
 
           String errorMsg = jObj.getString("error_msg"); 
 
           Toast.makeText(getApplicationContext(), errorMsg, Toast.LENGTH_LONG).show(); 
 
          } 
 
         } catch (JSONException e) { 
 
          // JSON error 
 
          e.printStackTrace(); 
 
          Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show(); 
 
         } 
 
        } 
 
       }, new Response.ErrorListener() { 
 
      @Override 
 
      public void onErrorResponse(VolleyError error) { 
 
       Toast.makeText(getApplicationContext(), "VolleyError" + error.toString(), Toast.LENGTH_LONG).show(); 
 
      } 
 
     }) { 
 
      @Override 
 
      protected Map<String, String> getParams() { 
 
       Map<String, String> params = new HashMap<String, String>(); 
 
       params.put("username", username.getText().toString()); 
 
       params.put("password", password.getText().toString()); 
 
       return params; 
 
      } 
 

 
     }; 
 

 
     RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); 
 
     requestQueue.add(stringRequest); 
 
    } 
 
}

答えて

1

。それは、 "{" で始まる場合にのみ、あなたのonResponseインサイド

この

 int index=response.indexOf("{"); 
     String jsonString= st.substring(index); 
     JSONObject jObj = new JSONObject(jsonString); 
     String status = jObj.getString("success"); 

StringはJsonObjectに変換することができますしてみてください。

+0

返信と説明をありがとう。 '' String''は '' String''のどこにありますか?jsonString = st.substring(index); '?とにかく –

+0

それは働いた。ありがとう、たくさんの男。 @Ragesh Ramesh。 –

+0

@SomnathPalここに** "st" **は何ですか? –

関連する問題