2017-02-07 4 views
-4

Ich bin ein Designer und habe keine Ahnung von Kodierung, ich repariere eine App und nachdem ich apk gebaut habe, habe ich diesen Fehler auf dem Anmeldebildschirm, als ich geben Sie alle Details und klicken Sie auf die Registrierungvalue <! DOCTYPE vom Typ java.lang.string kann nicht in jsonobject konvertiert werden

Wert <! DOCTYPE vom Typ java.lang.String nicht konvertiert werden können

Dies ist die komplette Code auf meiner signupactivity.java Datei zu JSONObject.

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

Sie erhalten XML und versuchen, es wie JSON zu analysieren. Das wird nicht funktionieren. Bitte besuchen Sie die [Hilfe] und lesen [fragen], um zu erfahren, wie Sie diese Seite effektiv nutzen können. Ein wenig mehr Aufwand von Ihrer Seite ist erforderlich, und wir können den großen Block von Code nicht debuggen, ohne dass Sie feststellen, wo das Problem auftritt. –

+0

Kurz gesagt, die Antwort vom Server ist falsch, der Server sendet Ihnen wahrscheinlich den HTML-Code, im Allgemeinen passiert es, wenn der Server abstürzt, wenn eine Anfrage an ihn gesendet wird. –

Antwort

-1

Kurz gesagt, die Antwort vom Server ist falsch, Server sendet Ihnen wahrscheinlich das HTML, es passiert im Allgemeinen, wenn der Server abstürzt, wenn eine Anfrage an es gesendet wird.

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

scheinen diese nicht vollständig deine Schuld zu sein. Scheinbar API, die Sie verwenden, ist schlecht geschrieben und spuckt die reine HTML 404/500-Fehlerseite aus, falls ein unbehandeltes Backend-Problem auftritt. Dies ist leider ziemlich häufig bei halbfertiger oder schlecht gestalteter oder nicht getesteter Software. Wenn Sie also keinen Zugriff auf den Quellcode haben, um das Problem zu beheben, können Sie mit diesem Verhalten nicht viel anfangen. Was aber Ihr Fehler ist, ist die fehlende Fehlerbehandlung in Ihrem Code. Sie sollten immer erwarten das Schlimmste, was in diesem Fall bedeutet, API-Timeout, fehlende Antwort, fehlerhafte Antwort, unvollständige Antwort oder missgebildete Antwort und so weiter und vorbereitet sein. Im Fall von Ihrem aktuellen Code müssen Sie try/catch Antwort-Parsing-Code-Block und wenn Ausnahme auftreten behandeln Sie es auf die gleiche Weise würden Sie mit anderen Fehlern dort umgehen.

Verwandte Themen