簡體   English   中英

JSON對象轉換錯誤

[英]Json object converting error

我正在嘗試使用json將android與php和mysql連接起來。 這是我要添加數據的編碼的一部分。

基於編碼

私有靜態字符串url_create_fixture =“ http:// android_connect / create_product.php”;

如果我通過android手機而不是模擬器測試此應用程序,則IP地址應該是什么?

另一個問題,我在電話上測試了此應用程序,並說process.com.example.mobile_fixtures意外停止工作。 請再試一次。

是因為IP錯誤還是我的程序有問題?

包com.example.chatapp;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;

import com.example.chatapp.ChatApp.Login;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Signup extends Activity{
    Button btnSignup;
    EditText textName;
    EditText textMail;
    EditText textUname;
    EditText textPassword;
    JSONParser jsonParser;
    private ProgressDialog pDialog;
    private static final String TAG_SUCCESS = "success";
    private static String login_rest = "link";
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.signup);
        btnSignup = (Button) findViewById(R.id.join);
        textName = (EditText) findViewById(R.id.name);
        textMail = (EditText) findViewById(R.id.mail);
        textUname = (EditText) findViewById(R.id.username);
        textPassword = (EditText) findViewById(R.id.password);
        btnSignup.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                new Join().execute();

            }
        });
    }
    class Join extends AsyncTask<String, String, String> {
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(Signup.this);
            pDialog.setMessage("Join ChatApp.....");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }
         protected String doInBackground(String... args) {
                String uname = textUname.getText().toString();
                String password = textPassword.getText().toString();
                String mail = textMail.getText().toString();
                String name = textName.getText().toString();
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("uname",uname));
                params.add(new BasicNameValuePair("password",password));
                params.add(new BasicNameValuePair("mail",mail));
                params.add(new BasicNameValuePair("name",name));
                params.add(new BasicNameValuePair("call_name","signup"));
                System.out.println("output"+params.toString());
                jsonParser = new JSONParser();
                JSONObject json = jsonParser.makeHttpRequest(login_rest,
                        "POST", params);
                System.out.println("output"+json.toString());
                return null;
        }
         protected void onPostExecute(String file_url) {
                // dismiss the dialog once done
                pDialog.dismiss();
            }

}
}

IT顯示錯誤:

08-21 19:47:41.368: I/dalvikvm(950): threadid=3: reacting to signal 3
08-21 19:47:41.489: I/dalvikvm(950): Wrote stack traces to '/data/anr/traces.txt'
08-21 19:47:41.689: D/dalvikvm(950): GC_FOR_ALLOC freed 72K, 3% free 9117K/9347K, paused 48ms
08-21 19:47:41.739: I/dalvikvm-heap(950): Grow heap (frag case) to 17.759MB for 9216016-byte allocation
08-21 19:47:41.839: D/dalvikvm(950): GC_CONCURRENT freed 1K, 2% free 18116K/18375K, paused 3ms+13ms
08-21 19:47:41.869: I/dalvikvm(950): threadid=3: reacting to signal 3
08-21 19:47:41.879: I/dalvikvm(950): Wrote stack traces to '/data/anr/traces.txt'
08-21 19:47:42.379: I/dalvikvm(950): threadid=3: reacting to signal 3
08-21 19:47:42.389: I/dalvikvm(950): Wrote stack traces to '/data/anr/traces.txt'
08-21 19:47:42.429: D/gralloc_goldfish(950): Emulator without GPU emulation detected.
08-21 19:47:57.299: D/InputEventConsistencyVerifier(950): KeyEvent: ACTION_UP but key was not down.
08-21 19:47:57.299: D/InputEventConsistencyVerifier(950):   in android.widget.EditText@41b95b10
08-21 19:47:57.299: D/InputEventConsistencyVerifier(950):   0: sent at 1193611000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_DPAD_DOWN, scanCode=108, metaState=0, flags=0x8, repeatCount=0, eventTime=1193611, downTime=1193611, deviceId=0, source=0x301 }
08-21 19:47:59.879: D/InputEventConsistencyVerifier(950): KeyEvent: ACTION_UP but key was not down.
08-21 19:47:59.879: D/InputEventConsistencyVerifier(950):   in android.widget.Button@41b975a0
08-21 19:47:59.879: D/InputEventConsistencyVerifier(950):   0: sent at 1196095000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_DPAD_DOWN, scanCode=108, metaState=0, flags=0x8, repeatCount=0, eventTime=1196095, downTime=1196095, deviceId=0, source=0x301 }
08-21 19:48:00.279: I/System.out(950): output[uname=ttt, password=ttt, mail=ttt, name=tt, call_name=signup]
08-21 19:48:01.839: E/JSON Parser(950): Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject
08-21 19:48:01.879: W/dalvikvm(950): threadid=12: thread exiting with uncaught exception (group=0x409c01f8)
08-21 19:48:01.939: E/AndroidRuntime(950): FATAL EXCEPTION: AsyncTask #1
08-21 19:48:01.939: E/AndroidRuntime(950): java.lang.RuntimeException: An error occured while executing doInBackground()
08-21 19:48:01.939: E/AndroidRuntime(950):  at android.os.AsyncTask$3.done(AsyncTask.java:278)
08-21 19:48:01.939: E/AndroidRuntime(950):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
08-21 19:48:01.939: E/AndroidRuntime(950):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
08-21 19:48:01.939: E/AndroidRuntime(950):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
08-21 19:48:01.939: E/AndroidRuntime(950):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-21 19:48:01.939: E/AndroidRuntime(950):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
08-21 19:48:01.939: E/AndroidRuntime(950):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
08-21 19:48:01.939: E/AndroidRuntime(950):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
08-21 19:48:01.939: E/AndroidRuntime(950):  at java.lang.Thread.run(Thread.java:856)
08-21 19:48:01.939: E/AndroidRuntime(950): Caused by: java.lang.NullPointerException
08-21 19:48:01.939: E/AndroidRuntime(950):  at com.example.chatapp.Signup$Join.doInBackground(Signup.java:72)
08-21 19:48:01.939: E/AndroidRuntime(950):  at com.example.chatapp.Signup$Join.doInBackground(Signup.java:1)
08-21 19:48:01.939: E/AndroidRuntime(950):  at android.os.AsyncTask$2.call(AsyncTask.java:264)
08-21 19:48:01.939: E/AndroidRuntime(950):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-21 19:48:01.939: E/AndroidRuntime(950):  ... 5 more
08-21 19:48:02.739: I/dalvikvm(950): threadid=3: reacting to signal 3
08-21 19:48:02.779: I/dalvikvm(950): Wrote stack traces to '/data/anr/traces.txt'
08-21 19:48:03.499: E/WindowManager(950): Activity com.example.chatapp.Signup has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41bb29e0 that was originally added here
08-21 19:48:03.499: E/WindowManager(950): android.view.WindowLeaked: Activity com.example.chatapp.Signup has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41bb29e0 that was originally added here
08-21 19:48:03.499: E/WindowManager(950):   at android.view.ViewRootImpl.<init>(ViewRootImpl.java:344)
08-21 19:48:03.499: E/WindowManager(950):   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:267)
08-21 19:48:03.499: E/WindowManager(950):   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
08-21 19:48:03.499: E/WindowManager(950):   at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
08-21 19:48:03.499: E/WindowManager(950):   at android.view.Window$LocalWindowManager.addView(Window.java:537)
08-21 19:48:03.499: E/WindowManager(950):   at android.app.Dialog.show(Dialog.java:278)
08-21 19:48:03.499: E/WindowManager(950):   at com.example.chatapp.Signup$Join.onPreExecute(Signup.java:55)
08-21 19:48:03.499: E/WindowManager(950):   at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561)
08-21 19:48:03.499: E/WindowManager(950):   at android.os.AsyncTask.execute(AsyncTask.java:511)
08-21 19:48:03.499: E/WindowManager(950):   at com.example.chatapp.Signup$1.onClick(Signup.java:43)
08-21 19:48:03.499: E/WindowManager(950):   at android.view.View.performClick(View.java:3511)
08-21 19:48:03.499: E/WindowManager(950):   at android.view.View$PerformClick.run(View.java:14105)
08-21 19:48:03.499: E/WindowManager(950):   at android.os.Handler.handleCallback(Handler.java:605)
08-21 19:48:03.499: E/WindowManager(950):   at android.os.Handler.dispatchMessage(Handler.java:92)
08-21 19:48:03.499: E/WindowManager(950):   at android.os.Looper.loop(Looper.java:137)
08-21 19:48:03.499: E/WindowManager(950):   at android.app.ActivityThread.main(ActivityThread.java:4424)
08-21 19:48:03.499: E/WindowManager(950):   at java.lang.reflect.Method.invokeNative(Native Method)
08-21 19:48:03.499: E/WindowManager(950):   at java.lang.reflect.Method.invoke(Method.java:511)
08-21 19:48:03.499: E/WindowManager(950):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-21 19:48:03.499: E/WindowManager(950):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-21 19:48:03.499: E/WindowManager(950):   at dalvik.system.NativeStart.main(Native Method)
08-21 19:48:16.229: I/Process(950): Sending signal. PID: 950 SIG: 9

PHP編碼:

<?php
 require_once __DIR__ . '/db_connect.php';
/*
 * Following code will create a new product row
 * All product details are read from HTTP GET Request
 */

class chatappCall {



// mysql inserting a new row
function login($param)
 {
     $response = array();
     if(isset($param['uname'])&&isset($param['password']))
     {
     $db = new DB_CONNECT();
     $db_conn = $db->getConnected();
     $result = mysqli_query($db_conn,"select * from users where uname='".$param['uname']."' and password='".$param['password']."'");
     if(!empty($result)) {
            // successfully inserted into database
            $result = mysqli_fetch_array($result);

            //$detail = array();
            $response["id"] = $result["id"];
            $response["name"] = $result["name"];

            // success
            $response["success"] = 1;


            return $response;
        } else {
            // failed to insert row
            $response["success"] = 0;
            $response["message"] = "Oops! An error occurred.";
            return $response;
        }

     }
     else
     {
        // required field is missing
        $response["success"] = 0;
        $response["message"] = "Invalid Username/Password.";
        // echoing JSON response
        return $response;
    }
 }  
 function signup($param)
{
    $response = array();
     if(isset($param['uname'])&&isset($param['password']))
     {
     $db = new DB_CONNECT();
     $db_conn = $db->getConnected();
     $result = mysqli_query($db_conn,"INSERT INTO `users`(`uname`, `password`, `name`, `mail`) VALUES ('".$param['uname']."','".$param['password']."','".$param['name']."','".$param['mail']."')";
     if($result) {
            // successfully inserted into database
            $result = mysqli_fetch_array($result);

            $response["success"] = 1;
            $response["message"] = "Join Success Fully With ChatApp";
            return $response;
        } else {
            // failed to insert row
            $response["success"] = 0;
            $response["message"] = "Oops! An error occurred.";
            $response["qwe"]="('".$param['uname']."','".$param['password']."','".$param['name']."','".$param['mail']." )";
            return $response;
        }

     }
     else
     {
        // required field is missing
        $response["success"] = 0;
        $response["message"] = "Error In Input.";
        // echoing JSON response
        return $response;
    }
}
}
?>

您的JSON解析錯誤可能是由於您的服務器端代碼輸出了非JSON文本。 鑒於這種:

[..snip..].JSONException: Value <br of type java.lang.[..snip..]
                                ^^^

您可能會遇到PHP錯誤/警告,並隨同JSON一起輸出嵌入的html,從而破壞了它。 您應該嘗試直接在瀏覽器中點擊服務URL並查看返回的結果,或者在嘗試解析之前在Android應用中記錄原始響應字符串。

您的PHP代碼幾乎肯定也容易受到sql注入攻擊的攻擊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM