2017-02-07 1 views
-4

Я дизайнер и понятия не имею о кодировании, я пересказываю приложение и после сборки apk. У меня есть эта ошибка на экране регистрации, когда я ввести все данные и нажмите на SignupЗначение <! DOCTYPE типа java.lang.string не может быть преобразовано в jsonobject

< значения! DOCTYPE типа java.lang.String не может быть преобразован в JSONObject

Вот полный код на моем signupactivity.java файл.

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.ActivityCompat; 
import android.util.Log; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

import com.android.volley.Request; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 

import org.json.JSONObject; 

import java.util.HashMap; 
import java.util.Map; 

import com.amo.FillPocket.app.App; 
import com.amo.FillPocket.common.ActivityBase; 
import com.amo.FillPocket.util.CustomRequest; 
import com.amo.FillPocket.util.Helper; 

public class SignupActivity extends ActivityBase { 


    EditText signupUsername, signupFullname, signupPassword, signupEmail; 
    Button signupJoinBtn; 

    private String username, fullname, password, email; 

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

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 

     signupUsername = (EditText) findViewById(R.id.signupUsername); 
     signupFullname = (EditText) findViewById(R.id.signupFullname); 
     signupPassword = (EditText) findViewById(R.id.signupPassword); 
     signupEmail = (EditText) findViewById(R.id.signupEmail); 

     signupJoinBtn = (Button) findViewById(R.id.signupJoinBtn); 

     signupJoinBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       username = signupUsername.getText().toString(); 
       fullname = signupFullname.getText().toString(); 
       password = signupPassword.getText().toString(); 
       email = signupEmail.getText().toString(); 

       if (verifyRegForm()) { 

        if (App.getInstance().isConnected()) { 

         showpDialog(); 

         CustomRequest jsonReq = new CustomRequest(Request.Method.POST, METHOD_ACCOUNT_SIGNUP, null, 
           new Response.Listener<JSONObject>() { 
            @Override 
            public void onResponse(JSONObject response) { 

             Log.e("Profile", "Malformed JSON: \"" + response.toString() + "\""); 

             if (App.getInstance().authorize(response)) { 

              Intent i = new Intent(getApplicationContext(), MainActivity.class); 
              startActivity(i); 

              ActivityCompat.finishAffinity(SignupActivity.this); 

             } else { 

              switch (App.getInstance().getErrorCode()) { 

               case 300 : { 

                signupUsername.setError(getString(R.string.error_login_taken)); 
                break; 
               } 

               case 301 : { 

                signupEmail.setError(getString(R.string.error_email_taken)); 
                break; 
               } 

               default: { 

                Log.e("Profile", "Could not parse malformed JSON: \"" + response.toString() + "\""); 
                break; 
               } 
              } 
             } 

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

           Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show(); 
           Log.e("Profile", "Malformed JSON: \"" + error.getMessage() + "\""); 

           hidepDialog(); 
          } 
         }) { 

          @Override 
          protected Map<String, String> getParams() { 
           Map<String, String> params = new HashMap<String, String>(); 
           params.put("username", username); 
           params.put("fullname", fullname); 
           params.put("password", password); 
           params.put("email", email); 
           params.put("clientId", CLIENT_ID); 

           return params; 
          } 
         }; 

         App.getInstance().addToRequestQueue(jsonReq); 

        } else { 

         Toast.makeText(getApplicationContext(), R.string.msg_network_error, Toast.LENGTH_SHORT).show(); 
        } 
       } 
      } 
     }); 

    } 


    public Boolean verifyRegForm() { 

     signupUsername.setError(null); 
     signupFullname.setError(null); 
     signupPassword.setError(null); 
     signupEmail.setError(null); 

     Helper helper = new Helper(); 

     if (username.length() == 0) { 

      signupUsername.setError(getString(R.string.error_field_empty)); 

      return false; 
     } 

     if (username.length() < 5) { 

      signupUsername.setError(getString(R.string.error_small_username)); 

      return false; 
     } 

     if (!helper.isValidLogin(username)) { 

      signupUsername.setError(getString(R.string.error_wrong_format)); 

      return false; 
     } 

     if (fullname.length() == 0) { 

      signupFullname.setError(getString(R.string.error_field_empty)); 

      return false; 
     } 

     if (password.length() == 0) { 

      signupPassword.setError(getString(R.string.error_field_empty)); 

      return false; 
     } 

     if (password.length() < 6) { 

      signupPassword.setError(getString(R.string.error_small_password)); 

      return false; 
     } 

     if (!helper.isValidPassword(password)) { 

      signupPassword.setError(getString(R.string.error_wrong_format)); 

      return false; 
     } 

     if (email.length() == 0) { 

      signupEmail.setError(getString(R.string.error_field_empty)); 

      return false; 
     } 

     if (!helper.isValidEmail(email)) { 

      signupEmail.setError(getString(R.string.error_wrong_format)); 

      return false; 
     } 

     return true; 
    } 

    @Override 
    public void onBackPressed(){ 

     finish(); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     switch (item.getItemId()) { 

      case android.R.id.home: { 

       finish(); 
       return true; 
      } 

      default: { 

       return super.onOptionsItemSelected(item); 
      } 
     } 
    } 
} 
+0

Вы получаете XML и пытаетесь его разобрать, как если бы были JSON. Это не будет работать. Пожалуйста, посетите [help] и прочитайте [ask], чтобы узнать, как эффективно использовать этот сайт. Требуется немного больше усилий с вашей стороны, и мы не сможем отлаживать большой блок кода, не указывая, где возникает проблема. –

+0

Вкратце ответ с сервера неверен, сервер, вероятно, отправляет вам HTML-код, как правило, это происходит при сбое сервера при отправке запроса. –

ответ

-1

Вкратце ответ от сервера неправильно, сервер, вероятно, посылает вам HTML, это обычно происходит, когда сбой сервера, когда запрос направляется к нему.

0
value <!DOCTYPE of type java.lang.string can not be converted to jsonobject 

Это, по-видимому, не полностью соответствует вашей вине. Очевидно, что API, который вы используете, плохо написан и выплескивает чистую страницу ошибок HTML 404/500 в случае возникновения необработанной проблемы с бэкэнд. Это, к сожалению, довольно часто встречается с полупеченным или плохо спроектированным или непроверенным программным обеспечением, поэтому, если у вас нет доступа к исходному коду, чтобы исправить это, но тогда вы ничего не можете с этим поведением. Однако в вашей вине есть недостаток обработки ошибок в вашем коде. Вы должны всегда ожидать худшее, что в данном случае означает время ожидания API, отсутствие ответа, ошибочный ответ, неполный ответ или неверный ответ и т. Д. И готовность. В случае вашего текущего кода вам потребуется try/catch блок анализа синтаксического ответа, а при возникновении исключения обрабатывайте его так же, как и с другими ошибками.

Смежные вопросы

 Смежные вопросы