Php Android/JSON:org.JSON.JSONException:java.lang.String类型的值无法转换为JSONObject

Php Android/JSON:org.JSON.JSONException:java.lang.String类型的值无法转换为JSONObject,php,android,mysql,json,sqlite,Php,Android,Mysql,Json,Sqlite,当我尝试使用托管在00webhost.com上的PHP脚本将我的SQLiteDB的内容上载到相应的MYSQL数据库时,我在标题中遇到了错误。 我还收到了toast输出:“上传时出错。请稍后重试。”这表明正在调用LongOperation类(如下所示) 我问了一个非常类似的问题,问题是登录详细信息不正确。但是,对于这个脚本,情况并非如此 下面的代码有什么问题 步骤1:在onCreate()中从SQLite数据库获取值 上面调用的UploadDataAuto方法: public void Uploa

当我尝试使用托管在
00webhost.com上的
PHP
脚本将我的
SQLite
DB的内容上载到相应的
MYSQL
数据库时,我在标题中遇到了错误。

我还收到了toast输出:
“上传时出错。请稍后重试。”
这表明正在调用
LongOperation
类(如下所示)

我问了一个非常类似的问题,问题是登录详细信息不正确。但是,对于这个脚本,情况并非如此

下面的代码有什么问题

步骤1:在onCreate()中从SQLite数据库获取值

上面调用的UploadDataAuto方法:

public void UploadDataAuto(String sessionId, String game, String name,
            Integer score, Integer avgAttn, Integer avgMed, Integer maxAttn,
            Integer maxMed, String date){

        // Defined URL where to send data
        String ServerUrl = "http://ry.net16.net/gameRegistration.php?sessionId="
                + sessionId
                + "&game="
                + game
                + "&name="
                + name
                + "&avgMed="
                + avgMed
                + "&maxMed="
                + maxMed
                + "&avgAttn="
                + avgAttn
                + "&maxAttn="
                + maxAttn
                + "&score="
                + score
                + "&date="
                + date
                + "";

        LongOperation longOperation = new LongOperation();
        longOperation.sessionId = sessionId;
        longOperation.execute(ServerUrl);

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

        // Required initialization
        private final HttpClient Client = new DefaultHttpClient();
        private String Content;
        private String Error = null;
        private ProgressDialog Dialog = new ProgressDialog(LoginHome.this);
        String data = "";
        int sizeData = 0;
        public String sessionId = "";

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

            // Start Progress Dialog (Message)

            Dialog.setMessage("Please wait.. Data is uploading .");
            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")) {

                        //loginDataBaseAdapter.deleteUploadedRecord(sessionId);

                        Toast.makeText(LoginHome.this,
                                "Data is successfully uploaded.",
                                Toast.LENGTH_LONG).show();

                    } else {
                        Toast.makeText(
                                LoginHome.this,
                                "Error while uploading. Please try again later.",
                                Toast.LENGTH_LONG).show();
                    }

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

                catch (JSONException e) {

                    e.printStackTrace();
                }

            }
        }

    }
<?php

if(isset($_GET['sessionId']) && isset($_GET['game']) && isset($_GET['name']) && isset($_GET['avgMed']) && isset($_GET['maxMed']) && isset($_GET['avgAttn']) && isset($_GET['maxAttn']) && isset($_GET['score']) && isset($_GET['date'])  )
{

$mysql_host = "";
$mysql_database = "";
$mysql_user = "";
$mysql_password = "";


    // Provide host ip, mysql user name, password
    $con = mysql_connect($mysql_host,$mysql_user,$mysql_password);

    // Provide database name.
    mysql_select_db($mysql_database);

    $sessionId=$_GET['sessionId'];

    $game=$_GET['game'];

    $name=$_GET['name'];

    $avgMed=$_GET['avgMed'];

    $maxMed=$_GET['maxMed'];

    $avgAttn=$_GET['avgAttn'];

    $maxAttn=$_GET['maxAttn'];

    $score=$_GET['score'];

    $date=$_GET['date'];


    $flag="false";


    if(!empty($game) && !empty($name) && !empty($date) && !empty($sessionId))
    {

        $sql="Insert into `GameDetails` (`SessionId`,`game`,`name`,`AvgMediation`,`MaxMediation`,`AvgAttention` ,`MaxAttention`,`Score`,`Date`) values ('$sessionId','$game','$name','$avgMed','$maxMed','$avgAttn','$maxAttn','$score','$date') ";

        $result=mysql_query($sql);

        if($result)
        {
            $count= mysql_affected_rows();
            if($count > 0)
            {
                $flag="true"; //result true 

            }               

        }

        mysql_close($con);  

        echo json_encode(array("result"=>$flag));
    }
}

?>  
 08-15 22:48:10.907: W/System.err(20233): org.json.JSONException: Value <!-- of type java.lang.String cannot be converted to JSONObject
    08-15 22:48:10.907: W/System.err(20233):    at org.json.JSON.typeMismatch(JSON.java:111)
    08-15 22:48:10.907: W/System.err(20233):    at org.json.JSONObject.<init>(JSONObject.java:159)
    08-15 22:48:10.907: W/System.err(20233):    at org.json.JSONObject.<init>(JSONObject.java:172)
    08-15 22:48:10.907: W/System.err(20233):    at com.example.brianapp.LoginHome$LongOperation.onPostExecute(LoginHome.java:259)
    08-15 22:48:10.907: W/System.err(20233):    at com.example.brianapp.LoginHome$LongOperation.onPostExecute(LoginHome.java:1)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.AsyncTask.finish(AsyncTask.java:632)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.Handler.dispatchMessage(Handler.java:102)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.Looper.loop(Looper.java:157)
    08-15 22:48:10.907: W/System.err(20233):    at android.app.ActivityThread.main(ActivityThread.java:5356)
    08-15 22:48:10.907: W/System.err(20233):    at java.lang.reflect.Method.invokeNative(Native Method)
    08-15 22:48:10.907: W/System.err(20233):    at java.lang.reflect.Method.invoke(Method.java:515)
    08-15 22:48:10.907: W/System.err(20233):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
    08-15 22:48:10.907: W/System.err(20233):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
    08-15 22:48:10.907: W/System.err(20233):    at dalvik.system.NativeStart.main(Native Method)
私有类LongOperation(在上面的方法中调用):

public void UploadDataAuto(String sessionId, String game, String name,
            Integer score, Integer avgAttn, Integer avgMed, Integer maxAttn,
            Integer maxMed, String date){

        // Defined URL where to send data
        String ServerUrl = "http://ry.net16.net/gameRegistration.php?sessionId="
                + sessionId
                + "&game="
                + game
                + "&name="
                + name
                + "&avgMed="
                + avgMed
                + "&maxMed="
                + maxMed
                + "&avgAttn="
                + avgAttn
                + "&maxAttn="
                + maxAttn
                + "&score="
                + score
                + "&date="
                + date
                + "";

        LongOperation longOperation = new LongOperation();
        longOperation.sessionId = sessionId;
        longOperation.execute(ServerUrl);

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

        // Required initialization
        private final HttpClient Client = new DefaultHttpClient();
        private String Content;
        private String Error = null;
        private ProgressDialog Dialog = new ProgressDialog(LoginHome.this);
        String data = "";
        int sizeData = 0;
        public String sessionId = "";

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

            // Start Progress Dialog (Message)

            Dialog.setMessage("Please wait.. Data is uploading .");
            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")) {

                        //loginDataBaseAdapter.deleteUploadedRecord(sessionId);

                        Toast.makeText(LoginHome.this,
                                "Data is successfully uploaded.",
                                Toast.LENGTH_LONG).show();

                    } else {
                        Toast.makeText(
                                LoginHome.this,
                                "Error while uploading. Please try again later.",
                                Toast.LENGTH_LONG).show();
                    }

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

                catch (JSONException e) {

                    e.printStackTrace();
                }

            }
        }

    }
<?php

if(isset($_GET['sessionId']) && isset($_GET['game']) && isset($_GET['name']) && isset($_GET['avgMed']) && isset($_GET['maxMed']) && isset($_GET['avgAttn']) && isset($_GET['maxAttn']) && isset($_GET['score']) && isset($_GET['date'])  )
{

$mysql_host = "";
$mysql_database = "";
$mysql_user = "";
$mysql_password = "";


    // Provide host ip, mysql user name, password
    $con = mysql_connect($mysql_host,$mysql_user,$mysql_password);

    // Provide database name.
    mysql_select_db($mysql_database);

    $sessionId=$_GET['sessionId'];

    $game=$_GET['game'];

    $name=$_GET['name'];

    $avgMed=$_GET['avgMed'];

    $maxMed=$_GET['maxMed'];

    $avgAttn=$_GET['avgAttn'];

    $maxAttn=$_GET['maxAttn'];

    $score=$_GET['score'];

    $date=$_GET['date'];


    $flag="false";


    if(!empty($game) && !empty($name) && !empty($date) && !empty($sessionId))
    {

        $sql="Insert into `GameDetails` (`SessionId`,`game`,`name`,`AvgMediation`,`MaxMediation`,`AvgAttention` ,`MaxAttention`,`Score`,`Date`) values ('$sessionId','$game','$name','$avgMed','$maxMed','$avgAttn','$maxAttn','$score','$date') ";

        $result=mysql_query($sql);

        if($result)
        {
            $count= mysql_affected_rows();
            if($count > 0)
            {
                $flag="true"; //result true 

            }               

        }

        mysql_close($con);  

        echo json_encode(array("result"=>$flag));
    }
}

?>  
 08-15 22:48:10.907: W/System.err(20233): org.json.JSONException: Value <!-- of type java.lang.String cannot be converted to JSONObject
    08-15 22:48:10.907: W/System.err(20233):    at org.json.JSON.typeMismatch(JSON.java:111)
    08-15 22:48:10.907: W/System.err(20233):    at org.json.JSONObject.<init>(JSONObject.java:159)
    08-15 22:48:10.907: W/System.err(20233):    at org.json.JSONObject.<init>(JSONObject.java:172)
    08-15 22:48:10.907: W/System.err(20233):    at com.example.brianapp.LoginHome$LongOperation.onPostExecute(LoginHome.java:259)
    08-15 22:48:10.907: W/System.err(20233):    at com.example.brianapp.LoginHome$LongOperation.onPostExecute(LoginHome.java:1)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.AsyncTask.finish(AsyncTask.java:632)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.Handler.dispatchMessage(Handler.java:102)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.Looper.loop(Looper.java:157)
    08-15 22:48:10.907: W/System.err(20233):    at android.app.ActivityThread.main(ActivityThread.java:5356)
    08-15 22:48:10.907: W/System.err(20233):    at java.lang.reflect.Method.invokeNative(Native Method)
    08-15 22:48:10.907: W/System.err(20233):    at java.lang.reflect.Method.invoke(Method.java:515)
    08-15 22:48:10.907: W/System.err(20233):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
    08-15 22:48:10.907: W/System.err(20233):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
    08-15 22:48:10.907: W/System.err(20233):    at dalvik.system.NativeStart.main(Native Method)
私有类LongOperation扩展了异步任务{
//所需初始化
私有最终HttpClient客户端=新的DefaultHttpClient();
私有字符串内容;
私有字符串错误=null;
private ProgressDialog=新建ProgressDialog(LoginHome.this);
字符串数据=”;
int sizeData=0;
公共字符串sessionId=“”;
受保护的void onPreExecute(){
//注意:您可以在这里调用UI元素。
//启动进度对话框(消息)
setMessage(“请稍候..数据正在上载”);
Dialog.show();
}
//在onPreExecute方法之后调用
受保护的Void doInBackground(字符串…URL){
/************对Web服务器进行Post调用***********/
BufferedReader reader=null;
//发送数据
试一试{
//已定义用于发送数据的URL
URL=新URL(URL[0]);
//发送POST数据请求
URLConnection conn=url.openConnection();
连接设置输出(真);
OutputStreamWriter wr=新的OutputStreamWriter(
conn.getOutputStream());
wr.写入(数据);
wr.flush();
//获取服务器响应
reader=新的BufferedReader(新的InputStreamReader(
conn.getInputStream());
StringBuilder sb=新的StringBuilder();
字符串行=null;
//读取服务器响应
而((line=reader.readLine())!=null){
//在字符串中追加服务器响应
sb.追加(第+行“);
}
//将服务器响应附加到内容字符串
Content=sb.toString();
}捕获(例外情况除外){
Error=ex.getMessage();
}最后{
试一试{
reader.close();
}
捕获(例外情况除外){
}
}
/*****************************************************/
返回null;
}
受保护的void onPostExecute(未使用的void){
//注意:您可以在这里调用UI元素。
//关闭进度对话框
Dialog.dismise();
if(错误!=null){
//uiUpdate.setText(“输出:+错误);
}否则{
//在屏幕上显示响应Json(活动)
//uiUpdate.setText(内容);
/******************启动解析响应JSON数据*************/
字符串OutputData=“”;
JSONObject jsonResponse;
试一试{
/******
*从中创建具有名称/值映射的新JSONObject
*JSON字符串。
********/
jsonResponse=新的JSONObject(内容);
String result=jsonResponse.get(“result”).toString();
if(result.equals(“true”)){
//loginDataBaseAdapter.deleteUploadedRecord(sessionId);
Toast.makeText(LoginHome.this,
“数据已成功上载。”,
Toast.LENGTH_LONG).show();
}否则{
Toast.makeText(
罗金和美,这个,
“上载时出错。请稍后再试。”,
Toast.LENGTH_LONG).show();
}
}
/******************结束解析响应JSON数据*************/
捕获(JSONException e){
e、 printStackTrace();
}
}
}
}
URL中相应的PHP脚本(删除登录详细信息):

public void UploadDataAuto(String sessionId, String game, String name,
            Integer score, Integer avgAttn, Integer avgMed, Integer maxAttn,
            Integer maxMed, String date){

        // Defined URL where to send data
        String ServerUrl = "http://ry.net16.net/gameRegistration.php?sessionId="
                + sessionId
                + "&game="
                + game
                + "&name="
                + name
                + "&avgMed="
                + avgMed
                + "&maxMed="
                + maxMed
                + "&avgAttn="
                + avgAttn
                + "&maxAttn="
                + maxAttn
                + "&score="
                + score
                + "&date="
                + date
                + "";

        LongOperation longOperation = new LongOperation();
        longOperation.sessionId = sessionId;
        longOperation.execute(ServerUrl);

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

        // Required initialization
        private final HttpClient Client = new DefaultHttpClient();
        private String Content;
        private String Error = null;
        private ProgressDialog Dialog = new ProgressDialog(LoginHome.this);
        String data = "";
        int sizeData = 0;
        public String sessionId = "";

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

            // Start Progress Dialog (Message)

            Dialog.setMessage("Please wait.. Data is uploading .");
            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")) {

                        //loginDataBaseAdapter.deleteUploadedRecord(sessionId);

                        Toast.makeText(LoginHome.this,
                                "Data is successfully uploaded.",
                                Toast.LENGTH_LONG).show();

                    } else {
                        Toast.makeText(
                                LoginHome.this,
                                "Error while uploading. Please try again later.",
                                Toast.LENGTH_LONG).show();
                    }

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

                catch (JSONException e) {

                    e.printStackTrace();
                }

            }
        }

    }
<?php

if(isset($_GET['sessionId']) && isset($_GET['game']) && isset($_GET['name']) && isset($_GET['avgMed']) && isset($_GET['maxMed']) && isset($_GET['avgAttn']) && isset($_GET['maxAttn']) && isset($_GET['score']) && isset($_GET['date'])  )
{

$mysql_host = "";
$mysql_database = "";
$mysql_user = "";
$mysql_password = "";


    // Provide host ip, mysql user name, password
    $con = mysql_connect($mysql_host,$mysql_user,$mysql_password);

    // Provide database name.
    mysql_select_db($mysql_database);

    $sessionId=$_GET['sessionId'];

    $game=$_GET['game'];

    $name=$_GET['name'];

    $avgMed=$_GET['avgMed'];

    $maxMed=$_GET['maxMed'];

    $avgAttn=$_GET['avgAttn'];

    $maxAttn=$_GET['maxAttn'];

    $score=$_GET['score'];

    $date=$_GET['date'];


    $flag="false";


    if(!empty($game) && !empty($name) && !empty($date) && !empty($sessionId))
    {

        $sql="Insert into `GameDetails` (`SessionId`,`game`,`name`,`AvgMediation`,`MaxMediation`,`AvgAttention` ,`MaxAttention`,`Score`,`Date`) values ('$sessionId','$game','$name','$avgMed','$maxMed','$avgAttn','$maxAttn','$score','$date') ";

        $result=mysql_query($sql);

        if($result)
        {
            $count= mysql_affected_rows();
            if($count > 0)
            {
                $flag="true"; //result true 

            }               

        }

        mysql_close($con);  

        echo json_encode(array("result"=>$flag));
    }
}

?>  
 08-15 22:48:10.907: W/System.err(20233): org.json.JSONException: Value <!-- of type java.lang.String cannot be converted to JSONObject
    08-15 22:48:10.907: W/System.err(20233):    at org.json.JSON.typeMismatch(JSON.java:111)
    08-15 22:48:10.907: W/System.err(20233):    at org.json.JSONObject.<init>(JSONObject.java:159)
    08-15 22:48:10.907: W/System.err(20233):    at org.json.JSONObject.<init>(JSONObject.java:172)
    08-15 22:48:10.907: W/System.err(20233):    at com.example.brianapp.LoginHome$LongOperation.onPostExecute(LoginHome.java:259)
    08-15 22:48:10.907: W/System.err(20233):    at com.example.brianapp.LoginHome$LongOperation.onPostExecute(LoginHome.java:1)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.AsyncTask.finish(AsyncTask.java:632)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.Handler.dispatchMessage(Handler.java:102)
    08-15 22:48:10.907: W/System.err(20233):    at android.os.Looper.loop(Looper.java:157)
    08-15 22:48:10.907: W/System.err(20233):    at android.app.ActivityThread.main(ActivityThread.java:5356)
    08-15 22:48:10.907: W/System.err(20233):    at java.lang.reflect.Method.invokeNative(Native Method)
    08-15 22:48:10.907: W/System.err(20233):    at java.lang.reflect.Method.invoke(Method.java:515)
    08-15 22:48:10.907: W/System.err(20233):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
    08-15 22:48:10.907: W/System.err(20233):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
    08-15 22:48:10.907: W/System.err(20233):    at dalvik.system.NativeStart.main(Native Method)

看起来您想用非JSON字符串创建一个新的
JSONObject
。这似乎发生在
onPostExecute()

其中
内容
可能没有JSON。

尝试替换

private class LongOperation extends AsyncTask<String, String, Void>

最后

protected void onPostExecute(Void unused) 


您可以发布您试图解析的JSON字符串吗?确保服务器返回有效的JSON。现在,它可能返回某种错误(404或其他)或网页。