2014-08-21 5 views
0

Я пытаюсь подключиться к андроиду с php, а также mysql с помощью json. Это отдельно от моего кодирования, которое заключается в добавлении данных.Ошибка преобразования объекта Json

на основе кодирования

частных статических строк url_create_fixture = "HTTP: // android_connect/create_product.php";

Какой должен быть IP-адрес, если я тестирую это приложение через Android-телефон вместо эмулятора?

Другой вопрос, я протестировал это приложение на телефоне, и он говорит, что 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 [email protected]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 [email protected] 
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 [email protected] 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 [email protected] 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; 
    } 
} 
} 
?> 

ответ

0

Ваш JSON ошибка синтаксического анализа, вероятно, из-за вашего серверного кода выводящего не-JSON текст. Учитывая это:

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

Вы, наверное, есть ошибка PHP/предупреждение с вложенным HTML выводится вместе с JSON, развращает его. Вы должны попробовать нажать URL-адрес службы непосредственно в своем браузере и посмотреть, что вернется, или зарегистрировать исходную строку ответа в приложении для Android, прежде чем пытаться ее проанализировать.

Ваш код PHP почти наверняка также уязвим для sql injection attacks.

+0

Мой api работает только хорошо ... Я думал, что что-то произошло в списке массивов и объекте json – user3040238

+0

Если бы он работал правильно, у вас не было бы html, смешанного с json. ответ json может иметь ТОЛЬКО json в нем. все остальное вызовет ошибки синтаксиса/разбора. –

+0

Я никогда не использую html-теги в моем api .. Так как его можно прийти? я собираюсь снова проверить раз – user3040238

Смежные вопросы