简体   繁体   English

JSON对象转换错误

[英]Json object converting error

I'm trying to connect android with php and also mysql using json. 我正在尝试使用json将android与php和mysql连接起来。 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"; 私有静态字符串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? 如果我通过android手机而不是模拟器测试此应用程序,则IP地址应该是什么?

Another question, I tested this application on the phone and it says that process.com.example.mobile_fixtures has stopped working unexpectedly. 另一个问题,我在电话上测试了此应用程序,并说process.com.example.mobile_fixtures意外停止工作。 Please try again. 请再试一次。

Is this because of the wrong ip or there is something wrong with my process? 是因为IP错误还是我的程序有问题?

package com.example.chatapp; 包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: 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 CODING: 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;
    }
}
}
?>

Your JSON parse error is probably due to your server-side code outputting non-JSON text. 您的JSON解析错误可能是由于您的服务器端代码输出了非JSON文本。 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. 您可能会遇到PHP错误/警告,并随同JSON一起输出嵌入的html,从而破坏了它。 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. 您应该尝试直接在浏览器中点击服务URL并查看返回的结果,或者在尝试解析之前在Android应用中记录原始响应字符串。

Your PHP code is almost certainly also vulnerable to sql injection attacks . 您的PHP代码几乎肯定也容易受到sql注入攻击的攻击

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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