2016-06-03 4 views
0

내 Android App 용 로그인 및 등록 시스템을 만드는 방법을 배우려고합니다. 나는 그것을위한 유튜브 비디오를 따라 갔고, 나는 나의 App을 실행할 때이 에러를 계속 얻는다.org.json.JSONException : 값 <html><body><java.lang.String 유형의 스크립트를 JSONObject로 변환 할 수 없습니다.

오류 로그 :

06-03 14:32:14.646 2563-2563/example.login W/System.err: org.json.JSONException: Value <html><body><script of type java.lang.String cannot be converted to JSONObject 
06-03 14:32:14.646 2563-2563/example.login W/System.err:  at org.json.JSON.typeMismatch(JSON.java:111) 
06-03 14:32:14.646 2563-2563/example.login W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:160) 
06-03 14:32:14.646 2563-2563/example.login W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:173) 
06-03 14:32:14.646 2563-2563/example.login W/System.err:  at vipanchithreddy.login.RegisterActivity$1$1.onResponse(RegisterActivity.java:41) 
06-03 14:32:14.646 2563-2563/example.login W/System.err:  at vipanchithreddy.login.RegisterActivity$1$1.onResponse(RegisterActivity.java:37) 
06-03 14:32:14.647 2563-2563/example.login W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60) 
06-03 14:32:14.647 2563-2563/example.login W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30) 
06-03 14:32:14.647 2563-2563/example.login W/System.err:  at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
06-03 14:32:14.647 2563-2563/example.login W/System.err:  at android.os.Handler.handleCallback(Handler.java:739) 
06-03 14:32:14.647 2563-2563/example.login W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:95) 
06-03 14:32:14.647 2563-2563/example.login W/System.err:  at android.os.Looper.loop(Looper.java:148) 
06-03 14:32:14.647 2563-2563/example.login W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5417) 
06-03 14:32:14.647 2563-2563/example.login W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
06-03 14:32:14.647 2563-2563/example.login W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
06-03 14:32:14.647 2563-2563/example.login W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

내가 JSON 인코딩에 새로운입니다. 나는이 문제에 관한 많은 글을 읽었지만 그것을 해결하는 방법에 대한 단서는 아직 없다. 이들은 내 PHP와 자바 파일입니다.

Register.php :

<?php 
    $con = mysqli_connect("my_server", "my_user", "my_password", "my_database"); 

    $username = $_POST["username"]; 
    $password = $_POST["password"]; 
    $statement = mysqli_prepare($con, "INSERT INTO user (username, password) VALUES (?, ?)"); 
    mysqli_stmt_bind_param($statement, "ss", $username, $password); 
    mysqli_stmt_execute($statement); 

    $response = array(); 
    $response["success"] = true; 

    echo json_encode($response); 
?> 

RegisterRequest.java :

package example.login; 

import com.android.volley.Response; 
import com.android.volley.toolbox.StringRequest; 

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

public class RegisterRequest extends StringRequest { 
    private static final String REGISTER_REQUEST_URL = "http://www.vipanchith.byethost17.com/file/Register.php"; 
    private Map<String, String> params; 

    public RegisterRequest(String username, String password, Response.Listener<String> listener) { 
     super(Method.POST, REGISTER_REQUEST_URL, listener, null); 
     params = new HashMap<>(); 
     params.put("username", username); 
     params.put("password", password); 
    } 

    @Override 
    public Map<String, String> getParams() { 
     return params; 
    } 
} 

RegisterActivity.java : 어떤 도움을 주시면 감사하겠습니다

package example.login; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONException; 
import org.json.JSONObject; 

public class RegisterActivity extends AppCompatActivity { 

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

     final EditText etUsername = (EditText) findViewById(R.id.etUsername); 
     final EditText etPassword = (EditText) findViewById(R.id.etPassword); 

     final Button bRegister = (Button) findViewById(R.id.bRegister); 

     assert bRegister != null; 
     bRegister.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       final String username = etUsername.getText().toString(); 
       final String password = etPassword.getText().toString(); 

       Response.Listener<String> responseListener = new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         try { 
          JSONObject jsonResponse = new JSONObject(response); 
          boolean success = jsonResponse.getBoolean("success"); 

          if (success) { 
           Intent intent = new Intent(RegisterActivity.this, LoginActivity.class); 
           RegisterActivity.this.startActivity(intent); 
          } else { 
           AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this); 
           builder.setMessage("Registration Failed") 
             .setNegativeButton("Retry", null) 
             .create() 
             .show(); 
          } 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 
       }; 

       RegisterRequest registerRequest = new RegisterRequest(username, password, responseListener); 
       RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this); 
       queue.add(registerRequest); 
      } 
     }); 
    } 
} 

. 고맙습니다.

+1

json으로 구문 분석하기 전에 응답 내용을 인쇄 할 수 있습니다. 아마 오류 페이지 html 코드 – andy

답변

0

고맙습니다. 코드에는 문제가 없습니다. 이것은 봇이 사이트에 액세스하는 것을 차단하기 위해 byethost.com에 의해 의도적으로 추가 된 추가 보호 기능으로 스크립트에 큰 보안 이점을줍니다. 나는 000webhost.com에이 파일들을 reuploaded했고 그것은 매력처럼 작동했습니다. 자세한 내용은이 토론을 참조하십시오. ByetHost server passing html values "Checking your browser" with JSON String

0

이 오류는 json에 값이 있으면 얻을 수있는 오류가 발생했습니다.

{ 
    test:[ 
    { 
     id:1, 
     name:me 
    }, 
    { 
    id:2, 
    name:you 
} 
] 
} 

그리고 JSON 값이없는 경우

...

{ 

} 

...는 그 오류가 발생했습니다.

+0

당신의 도움을 주셔서 감사합니다,하지만 어떻게 json은 가치가 있는지 확인합니까? –

+0

웹 서비스 API를 수정해야합니다. 웹 API 구조는 동일해야합니다. –

관련 문제