简体   繁体   中英

Json object converting error

I'm trying to connect android with php and also mysql using json. This is apart of my coding which is to add data.

Based on the coding

private static String url_create_fixture = "http:// android_connect/create_product.php";

What should be the ip address if I'm testing this application through android phone instead of the emulator?

Another question, I tested this application on the phone and it says that process.com.example.mobile_fixtures has stopped working unexpectedly. Please try again.

Is this because of the wrong ip or there is something wrong with my process?

package 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 showing Error:

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 CODING:

<?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;
    }
}
}
?>

Your JSON parse error is probably due to your server-side code outputting non-JSON text. Given this:

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

You've probably got a PHP error/warning with embedded html being output alongside the JSON, corrupting it. You should try hitting the service URL directly in your browser and see what comes back, or log the raw response string in your android app before trying to parse it.

Your PHP code is almost certainly also vulnerable to sql injection attacks .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM