Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JSON异常:字符串类型的值无法转换为JSON对象?_Php_Android_Mysql_Json - Fatal编程技术网

Php JSON异常:字符串类型的值无法转换为JSON对象?

Php JSON异常:字符串类型的值无法转换为JSON对象?,php,android,mysql,json,Php,Android,Mysql,Json,我在尝试运行以下代码时遇到此错误,这是一个简单的登录/upAndroid活动,链接到PHP脚本和MYSQL数据库,托管在00WebHost上 我如何解决这个问题?注意:这将停止正在填充的数据库 单击提交按钮时: public void onClick(View v) { // get The User name and Password String userName=editTextUserName.getText().toS

我在尝试运行以下代码时遇到此错误,这是一个简单的登录/up
Android
活动,链接到
PHP
脚本和
MYSQL
数据库,托管在
00WebHost

我如何解决这个问题?注意:这将停止正在填充的数据库

单击提交按钮时:

public void onClick(View v) {


                // get The User name and Password
                String userName=editTextUserName.getText().toString();
                String password=editTextPassword.getText().toString();

                  // WebServer Request URL
                String serverURL = "http://ry.net16.net/login_web_service.php?username=" + userName + "&password=" + password;

                // Use AsyncTask execute Method To Prevent ANR Problem
                new LongOperation().execute(serverURL);

                Log.d("trace url", "URL TRACE");

                {

                }

                {

                }
            }
        });
 private class LongOperation  extends AsyncTask<String, Void, Void> {

        // Required initialization

        private final HttpClient Client = new DefaultHttpClient();
        private String Content;
        private String Error = null;
        private ProgressDialog Dialog = new ProgressDialog(SignInActivity.this);
        String data =""; 
        int sizeData = 0;  


        protected void onPreExecute() {
            // NOTE: You can call UI Element here.

            //Start Progress Dialog (Message)

            Dialog.setMessage("Please wait..");
            Dialog.show();



        }

        // Call after onPreExecute method
        protected Void doInBackground(String... urls) {

            /************ Make Post Call To Web Server ***********/
            BufferedReader reader=null;

                 // Send data 
                try
                { 

                   // Defined URL  where to send data
                   URL url = new URL(urls[0]);

                  // Send POST data request

                  URLConnection conn = url.openConnection(); 
                  conn.setDoOutput(true); 
                  OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
                  wr.write( data ); 
                  wr.flush(); 

                  // Get the server response 

                  reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                  StringBuilder sb = new StringBuilder();
                  String line = null;

                    // Read Server Response
                    while((line = reader.readLine()) != null)
                        {
                               // Append server response in string
                               sb.append(line + "");
                        }

                    // Append Server Response To Content String 
                   Content = sb.toString();
                }
                catch(Exception ex)
                {
                    Error = ex.getMessage();
                }
                finally
                {
                    try
                    {

                        reader.close();
                    }

                    catch(Exception ex) {}
                }

            /*****************************************************/
            return null;
        }

        protected void onPostExecute(Void unused) {
            // NOTE: You can call UI Element here.

            // Close progress dialog
            Dialog.dismiss();

            if (Error != null) {


               // uiUpdate.setText("Output : "+Error);

            } else {

                // Show Response Json On Screen (activity)
              //  uiUpdate.setText( Content );

             /****************** Start Parse Response JSON Data *************/

                String OutputData = "";
                JSONObject jsonResponse;

                try {

                     /****** Creates a new JSONObject with name/value mappings from the JSON string. ********/
                     jsonResponse = new JSONObject(Content);

                     String result = jsonResponse.get("result").toString();

                     if (result.equals("true"))
                        {
                            SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
                            Editor editor = pref.edit();                     

                            /**************** Storing data as KEY/VALUE pair *******************/

                            editor.putBoolean("loggedIn", true);           // Saving boolean - true/false


                            // Save the changes in SharedPreferences
                            editor.commit(); // commit changes                              

                            Toast.makeText(SignInActivity.this, "Congrats: Login Successfull", Toast.LENGTH_LONG).show();


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


                        }
                     else
                    {
                        Toast.makeText(SignInActivity.this, "User Name or Password does not match. Please Sign Up if you are new. ", Toast.LENGTH_LONG).show();
                    }


                    }
                 /****************** End Parse Response JSON Data *************/    

                  catch (JSONException e) {

                     e.printStackTrace();
                 }


             }
        }

    }
08-15 18:24:59.117: W/System.err(29260): org.json.JSONException: Value <br><table of type java.lang.String cannot be converted to JSONObject
08-15 18:24:59.117: W/System.err(29260):    at org.json.JSON.typeMismatch(JSON.java:111)
08-15 18:24:59.117: W/System.err(29260):    at org.json.JSONObject.<init>(JSONObject.java:159)
08-15 18:24:59.117: W/System.err(29260):    at org.json.JSONObject.<init>(JSONObject.java:172)
08-15 18:24:59.117: W/System.err(29260):    at com.hmkcode.android.sign.SignUpActivity$LongOperation.onPostExecute(SignUpActivity.java:160)
08-15 18:24:59.117: W/System.err(29260):    at com.hmkcode.android.sign.SignUpActivity$LongOperation.onPostExecute(SignUpActivity.java:1)
08-15 18:24:59.117: W/System.err(29260):    at android.os.AsyncTask.finish(AsyncTask.java:632)
08-15 18:24:59.117: W/System.err(29260):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
08-15 18:24:59.117: W/System.err(29260):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
08-15 18:24:59.117: W/System.err(29260):    at android.os.Handler.dispatchMessage(Handler.java:102)
08-15 18:24:59.127: W/System.err(29260):    at android.os.Looper.loop(Looper.java:157)
08-15 18:24:59.127: W/System.err(29260):    at android.app.ActivityThread.main(ActivityThread.java:5356)
08-15 18:24:59.127: W/System.err(29260):    at java.lang.reflect.Method.invokeNative(Native Method)
08-15 18:24:59.127: W/System.err(29260):    at java.lang.reflect.Method.invoke(Method.java:515)
08-15 18:24:59.127: W/System.err(29260):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
08-15 18:24:59.127: W/System.err(29260):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
08-15 18:24:59.127: W/System.err(29260):    at dalvik.system.NativeStart.main(Native Method)
08-15 18:24:59.147: E/ViewRootImpl(29260): sendUserActionEvent() mView == null
长操作类:

public void onClick(View v) {


                // get The User name and Password
                String userName=editTextUserName.getText().toString();
                String password=editTextPassword.getText().toString();

                  // WebServer Request URL
                String serverURL = "http://ry.net16.net/login_web_service.php?username=" + userName + "&password=" + password;

                // Use AsyncTask execute Method To Prevent ANR Problem
                new LongOperation().execute(serverURL);

                Log.d("trace url", "URL TRACE");

                {

                }

                {

                }
            }
        });
 private class LongOperation  extends AsyncTask<String, Void, Void> {

        // Required initialization

        private final HttpClient Client = new DefaultHttpClient();
        private String Content;
        private String Error = null;
        private ProgressDialog Dialog = new ProgressDialog(SignInActivity.this);
        String data =""; 
        int sizeData = 0;  


        protected void onPreExecute() {
            // NOTE: You can call UI Element here.

            //Start Progress Dialog (Message)

            Dialog.setMessage("Please wait..");
            Dialog.show();



        }

        // Call after onPreExecute method
        protected Void doInBackground(String... urls) {

            /************ Make Post Call To Web Server ***********/
            BufferedReader reader=null;

                 // Send data 
                try
                { 

                   // Defined URL  where to send data
                   URL url = new URL(urls[0]);

                  // Send POST data request

                  URLConnection conn = url.openConnection(); 
                  conn.setDoOutput(true); 
                  OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
                  wr.write( data ); 
                  wr.flush(); 

                  // Get the server response 

                  reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                  StringBuilder sb = new StringBuilder();
                  String line = null;

                    // Read Server Response
                    while((line = reader.readLine()) != null)
                        {
                               // Append server response in string
                               sb.append(line + "");
                        }

                    // Append Server Response To Content String 
                   Content = sb.toString();
                }
                catch(Exception ex)
                {
                    Error = ex.getMessage();
                }
                finally
                {
                    try
                    {

                        reader.close();
                    }

                    catch(Exception ex) {}
                }

            /*****************************************************/
            return null;
        }

        protected void onPostExecute(Void unused) {
            // NOTE: You can call UI Element here.

            // Close progress dialog
            Dialog.dismiss();

            if (Error != null) {


               // uiUpdate.setText("Output : "+Error);

            } else {

                // Show Response Json On Screen (activity)
              //  uiUpdate.setText( Content );

             /****************** Start Parse Response JSON Data *************/

                String OutputData = "";
                JSONObject jsonResponse;

                try {

                     /****** Creates a new JSONObject with name/value mappings from the JSON string. ********/
                     jsonResponse = new JSONObject(Content);

                     String result = jsonResponse.get("result").toString();

                     if (result.equals("true"))
                        {
                            SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
                            Editor editor = pref.edit();                     

                            /**************** Storing data as KEY/VALUE pair *******************/

                            editor.putBoolean("loggedIn", true);           // Saving boolean - true/false


                            // Save the changes in SharedPreferences
                            editor.commit(); // commit changes                              

                            Toast.makeText(SignInActivity.this, "Congrats: Login Successfull", Toast.LENGTH_LONG).show();


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


                        }
                     else
                    {
                        Toast.makeText(SignInActivity.this, "User Name or Password does not match. Please Sign Up if you are new. ", Toast.LENGTH_LONG).show();
                    }


                    }
                 /****************** End Parse Response JSON Data *************/    

                  catch (JSONException e) {

                     e.printStackTrace();
                 }


             }
        }

    }
08-15 18:24:59.117: W/System.err(29260): org.json.JSONException: Value <br><table of type java.lang.String cannot be converted to JSONObject
08-15 18:24:59.117: W/System.err(29260):    at org.json.JSON.typeMismatch(JSON.java:111)
08-15 18:24:59.117: W/System.err(29260):    at org.json.JSONObject.<init>(JSONObject.java:159)
08-15 18:24:59.117: W/System.err(29260):    at org.json.JSONObject.<init>(JSONObject.java:172)
08-15 18:24:59.117: W/System.err(29260):    at com.hmkcode.android.sign.SignUpActivity$LongOperation.onPostExecute(SignUpActivity.java:160)
08-15 18:24:59.117: W/System.err(29260):    at com.hmkcode.android.sign.SignUpActivity$LongOperation.onPostExecute(SignUpActivity.java:1)
08-15 18:24:59.117: W/System.err(29260):    at android.os.AsyncTask.finish(AsyncTask.java:632)
08-15 18:24:59.117: W/System.err(29260):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
08-15 18:24:59.117: W/System.err(29260):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
08-15 18:24:59.117: W/System.err(29260):    at android.os.Handler.dispatchMessage(Handler.java:102)
08-15 18:24:59.127: W/System.err(29260):    at android.os.Looper.loop(Looper.java:157)
08-15 18:24:59.127: W/System.err(29260):    at android.app.ActivityThread.main(ActivityThread.java:5356)
08-15 18:24:59.127: W/System.err(29260):    at java.lang.reflect.Method.invokeNative(Native Method)
08-15 18:24:59.127: W/System.err(29260):    at java.lang.reflect.Method.invoke(Method.java:515)
08-15 18:24:59.127: W/System.err(29260):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
08-15 18:24:59.127: W/System.err(29260):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
08-15 18:24:59.127: W/System.err(29260):    at dalvik.system.NativeStart.main(Native Method)
08-15 18:24:59.147: E/ViewRootImpl(29260): sendUserActionEvent() mView == null
试试这个:

String serverURL = "http://ry.net16.net/login_web_service.php?username=" + URLEncoder.encode(userName) + "&password=" + URLEncoder.encode(password);

问题在于非JSON字符串
什么是

“+userName+”&password=“+password”

如果这不是JSON输出,那么您需要检查URL为什么没有提供JSON格式的文本


请发布URL的输出。

您对该PHP脚本有严重问题,我刚刚在浏览器中打开该URL,并看到了大量错误。因此,简而言之,PHP脚本没有返回任何
JSON
,它给您的
HTML
,这只是所有PHP警告…

您收到此错误是因为您没有获取实际的JSON编码响应。如其他回答中所述,您在尝试连接到数据库时遇到错误:

警告:mysql_connect()[function.mysql connect]:不允许主机“srv36.000webhost.com”在第14行的/home/a5369581/public_html/login_web_service.php中连接到此mysql服务器



您需要确保,
$mysql\u用户
在mysql数据库上设置了适当的权限。如果php脚本位于000webhost服务器上,该服务器也托管您的sql server,那么您应该能够使用在成员区域的000webhost仪表板上提供的登录凭据。

我发现了这个问题,而且它相当复杂问题是,基本上我没有使用正确的
登录
MYSQL数据库的详细信息。

您的字符串不是有效的json。检查服务器响应可以发布json吗?您可以发布一些用户和pwd吗?json在LongOperation类中。我的json解析器类也显示在EDIT中。这还没有解决问题,im get同样的错误JSON在LongOperation类中?很抱歉,我对使用JSON和phpy非常陌生。您的php有6个错误。请修复它。选择:“从登录中选择*用户名=”、“$UserName.”和密码=”、“$Password.”“URL的输出是空的,它没有给出任何正确的结果,因此问题在于PHP代码,它应该返回格式化的响应。尝试调试//返回json响应echo json_encode(数组(“结果”=>$flag));这可能是脚本与MYSQL数据库连接的问题吗?是的,调试json_encode(数组(“Apple”、“Banana”、“Pear”));而是检查结果是否有问题。谢谢,我怎么知道ry.net16.net/login\u web\u service.php?URL的地址正确吗?@codeme2020,首先你需要修复你的PHP,它现在已经坏了。好的,不幸的是我对PHP不是很确定,这是我第一次尝试使用它。如何修复?您的MySQL用户名/密码有问题。您的脚本无法连接到数据库是的,这与我使用的Web主机有关吗?我几乎可以肯定这个脚本和安卓系统的活动都是好的,看起来你对PHP和安卓系统都是新手。我想请你在尝试将两者结合在一起之前,先阅读一下。谢谢,我怎么知道?URL的地址是否正确?