2016-11-13 13 views
-2

私のアプリケーションにログインしようとしています。オンラインデータベースにアクセスし、入力が登録されているかどうかをチェックしていますが、 < java.lang.String型のbrはJSONObjectに変換できません。json - タイプjava.lang.Stringの値<brをJSONObjectに変換できません

なぜ私のPHPコードが< br />を返すのか分かりません。 (表示するには<とbrの間にスペースを追加しました)

ここに私のコードです。

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Context; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Button; 
import android.widget.EditText; 
import android.view.View; 
import android.widget.Toast; 

import org.json.JSONObject; 

import java.util.ArrayList; 
import java.util.HashMap; 

public class login extends Activity { 

    Button btnLogIn; 
    Intent intent; 
    JSONObject jsonobject; 

    Button btnSignUp; 
    EditText txtUsername, txtPassword; 

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

     btnLogIn = (Button)findViewById(R.id.btnLogIn); 
     btnSignUp = (Button)findViewById(R.id.btnSignUp); 
     txtUsername = (EditText)findViewById(R.id.txtliusername); 
     txtPassword = (EditText)findViewById(R.id.txtlipassword); 

    //  jsonobject = JSONfunctions.getJSONfromURL("http://sql18.hostinger.ph/phpmyadmin/index.php?db=u897407316_tret&lang=en&token=6afd355a23affd65cb4d05f814cc7921&phpMyAdmin=e2ba129883c7c52bc7e30fb543d3fa1095372c90"); 
    } 
    public void gosignup(View view){ 
     intent = new Intent(this, SignUp.class); 
     startActivity(intent); 
    } 
    public void gologin(View view){ 
     String name = txtUsername.getText().toString(); 
     String pw = txtPassword.getText().toString(); 
     String type = "login"; 

     if((name.trim().equals(""))||pw.trim().equals("")){ 
      Toast.makeText(getApplicationContext(), "Please fill up all information", Toast.LENGTH_LONG).show(); 
     } 
     else { 

      Toast.makeText(this, "Logging in...", Toast.LENGTH_SHORT).show(); 
      new LogInAction(this).execute(name, pw); 

      // intent = new Intent(this, UserHomeDrawer.class); 
      //startActivity(intent); 
     } 
    } 

} 

LogInAction.java

import android.content.Context; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.util.Log; 
import android.widget.Toast; 

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

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.net.URLEncoder; 

/** 
* Created by Camille on 11/13/2016. 
*/ 

public class LogInAction extends AsyncTask<String, Void, String> { 
    private Context context; 

    public LogInAction(Context context) { 
     this.context = context; 
    } 

    protected void onPreExecute() { 

    } 
    @Override 
    protected String doInBackground(String... arg0) { 
     String username = arg0[0]; 
     String password = arg0[1]; 

     String link; 
     String data; 
     BufferedReader bufferedReader; 
     String result; 

     try { 
      data = "?username=" + URLEncoder.encode(username, "UTF-8"); 
      data += "&password=" + URLEncoder.encode(password, "UTF-8"); 

      link = "http://threatmam.esy.es/loginActionAndroid.php" + data; 
      URL url = new URL(link); 
      HttpURLConnection con = (HttpURLConnection) url.openConnection(); 

      bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream())); 
      result = bufferedReader.readLine(); 
      return result; 

     } catch (Exception e) { 
      return new String("Exception: " + e.getMessage()); 
     } 

    } 

    @Override 
    protected void onPostExecute(String result) { 
     String jsonStr = result.toString(); 
     if (jsonStr != null) { 
      try { 
       JSONObject jsonObj = new JSONObject(jsonStr); 
       // JSONObject jsonObj = new JSONObject(jsonStr.substring(jsonStr.indexOf("{"), jsonStr.lastIndexOf("}") + 1)); 
       String query_result = jsonObj.getString("query_result"); 
       if (query_result.equals("SUCCESS")) { 
        Toast.makeText(context, "Log in successful!", Toast.LENGTH_SHORT).show(); 
        Intent intent = new Intent(context,UserHomeDrawer.class) 
          .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(intent); 
       } else if (query_result.equals("FAILURE")) { 
        Toast.makeText(context, "Log in failed.", Toast.LENGTH_SHORT).show(); 
       } else { 
        Toast.makeText(context, "Couldn't connect to remote database.", Toast.LENGTH_SHORT).show(); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
       Log.d("JSON", "Error:",e); 
       Toast.makeText(context, ""+e+"RES: "+jsonStr, Toast.LENGTH_SHORT).show(); 
      } 
     } else { 
      Toast.makeText(context, "Couldn't get any JSON data.", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

そして、ここでは私のPHPコード

<?php 
$un = $_GET['username']; 
$pw = md5(sha1($_GET['password'])); 

$res = 0; 
include "connect.php"; 


$query = "SELECT * FROM tbl_mobileuser"; 
result = $mysqli->query($query); 
if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     if(($un == $row['Username']) && if($pw == $row['Password'])){ 
      echo '{"query_result":"SUCCESS"}'; 
      $res = 1; 
     } 
    } 
} 
else{ 
    echo '{"query_result":"FAILURE"}'; 
} 


if($res == 0){ 
    echo '{"query_result":"FAILURE"}'; 
}      
?> 

私は間違いなく可能な解決策のために見上げたが、私はまだこの問題を解決することはできませんです。私は誰かが私を助けることができるといいです

+0

'Log.d(" JSON "、jsonStr)' ...リクエストをデバッグすると、問題がはっきりと表示されます –

+0

PHPスクリプトを実行します。これが出力です。 _
解析エラー:構文エラー、ライン
_ –

答えて

0

次のように私はあなたのURLをヒット:

http://threatmam.esy.es/loginActionAndroid.php?username=foo&password=bar

をサーバからの応答だった:あなたがすぐそこにあなたの答えを持っているよう

<br /> <b>Parse error</b>: syntax error, unexpected '=' in <b>/home/u897407316/public_html/loginActionAndroid.php</b> on line <b>10</b><br />

が見える - 要求が上の障害が発生していますサーバー側でJSONに変換しようとしているHTMLのエラー応答を返します。これは、当然、動作しません。

正しいリクエストをサーバーに送信していること、およびサーバーコードが正しく機能していることを確認してください。

さらに、HttpURLConnectionを使用して独自のソリューションをローリングするのではなく、優れたHTTPリクエストライブラリ(Volley、OkHttp、Retrofitなど)を使用することを検討することをおすすめします。

+0

私はupvoteすることはできませんが、おかげで予想外の '=' でloginActionAndroid.php! – camille

0

#11行の$が見つからないようです。

変更、

result = $mysqli->query($query); 

に、

$result = $mysqli->query($query); 

注:あなたが正しくあなたのPHPスクリプトのための応答を読んでいません。 readLine()は1行だけを読み込みます。あなたのPHPスクリプトが複数の(現在のように)出力する場合、あなたのアンドロイドコードはそれを読み取ることができませんし、いくつかのデータが欠落します。

+0

私はupvoteできませんが、ありがとう! – camille

+0

@camilleそれがあなたを助けたら受け入れてください。 :) –

関連する問題