2017-02-07 9 views
-4

저는 디자이너입니다. 코딩에 대해서는 잘 모르겠다. 앱을 reskining하는 중이고 apk를 만든 후에 가입 화면에서이 오류가 발생합니다. 모든 세부 사항을 입력하고 java.lang.String 타입의 DOCTYPE가 여기에 값 <! java.lang.string 유형의 DOCTYPE을 jsonobject로 변환 할 수 없습니다.

signupactivity.java 파일에 대한 전체 코드 된 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

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 응답 구문 분석 코드 블록이 필요하고 예외 발생시 다른 오류를 처리하는 것과 같은 방식으로 처리해야합니다.