我正在创建一个可以通过将ID号放在editText中来检索单词的应用程序.我继续得到这个错误.如何解决这个问题呢? org.Json.JSONException:{“server_response”:“Bird”}没有值
这是我的主Activity.java
package com.example.keam.lastnato;import androID.app.Activity;import androID.os.AsyncTask;import androID.os.Bundle;import androID.util.Log;import androID.vIEw.VIEw;import androID.Widget.button;import androID.Widget.EditText;import androID.Widget.TextVIEw;import androID.Widget.Toast;import org.apache.http.httpentity;import org.apache.http.httpResponse;import org.apache.http.nameValuePair;import org.apache.http.clIEnt.httpClIEnt;import org.apache.http.clIEnt.entity.UrlEncodedFormEntity;import org.apache.http.clIEnt.methods.httpPost;import org.apache.http.impl.clIEnt.DefaulthttpClIEnt;import org.apache.http.message.BasicnameValuePair;import org.Json.JsONException;import org.Json.JsONObject;import java.io.BufferedReader;import java.io.inputStream;import java.io.inputStreamReader;import java.util.ArrayList;public class MainActivity extends Activity {String ID;String word;inputStream is=null;String result=null;String line=null;String data ="";TextVIEw disp;String url = "http://192.168.0.10/checkpls.PHP";@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); final EditText e_ID=(EditText) findVIEwByID(R.ID.editText1); button select=(button) findVIEwByID(R.ID.button1); disp = (TextVIEw)findVIEwByID(R.ID.textVIEw); select.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { // Todo auto-generated method stub ID = e_ID.getText().toString(); select(); } });}public voID select(){ class readThis extends AsyncTask<String, VoID, String> { protected String doInBackground(String... params){ArrayList<nameValuePair> nameValuePairs = new ArrayList<nameValuePair>(); nameValuePairs.add(new BasicnameValuePair("ID",ID)); try { httpClIEnt httpclIEnt = new DefaulthttpClIEnt(); httpPost httppost = new httpPost(params[0]); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); httpResponse response = httpclIEnt.execute(httppost); httpentity entity = response.getEntity(); is = entity.getContent(); Log.e("pass 1", "connection success "); } catch(Exception e) { Log.e("Fail 1", e.toString()); Toast.makeText(getApplicationContext(), "InvalID IP Address", Toast.LENGTH_LONG).show(); } try { BufferedReader reader = new BufferedReader (new inputStreamReader(is,"iso-8859-1"),8); StringBuilder sb = new StringBuilder(); while ((line = reader.readline()) != null) { sb.append(line); } is.close(); result = sb.toString(); Log.e("pass 2", "connection success "); } catch(Exception e) { Log.e("Fail 2", e.toString()); } try { JsONObject Json_data = new JsONObject(result); word = Json_data.getString(result); Toast.makeText(getBaseContext(), "name: " + word, Toast.LENGTH_SHORT).show(); } catch(JsONException e) { Log.e("Fail 3", e.toString()); Log.e("log_tag", "Failed data was: " + result); } return word; } } readThis hello = new readThis(); hello.execute(new String[] {url});}}
这是我的activity_main.xml
<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"xmlns:tools="http://schemas.androID.com/tools"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:paddingBottom="@dimen/activity_vertical_margin"androID:paddingleft="@dimen/activity_horizontal_margin"androID:paddingRight="@dimen/activity_horizontal_margin"androID:paddingtop="@dimen/activity_vertical_margin"tools:context="com.example.keam.lastnato.MainActivity"><EditText androID:ID="@+ID/editText1" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_alignParenttop="true" androID:layout_centerHorizontal="true" androID:layout_margintop="39dp" androID:padding="11dp" androID:hint="ID" androID:ems="10" androID:inputType="number"> <requestFocus /></EditText><button androID:ID="@+ID/button1" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_below="@+ID/editText1" androID:layout_centerHorizontal="true" androID:layout_margintop="24dp" androID:onClick="parseJsON" androID:padding="11dp" androID:text="Select" /><TextVIEw androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="New Text" androID:ID="@+ID/textVIEw" androID:layout_centerVertical="true" androID:layout_centerHorizontal="true" /> </relativeLayout>
这是我的PHP文件“checkpls.PHP”
<?PHP$con = MysqLi_connect("localhost", "root", "1234", "check") or dIE ("Error ".MysqLi_error($con));$ID = $_POST['ID'];$sql = "SELECT * FROM tblcheckword where ID like '$ID';";$result = MysqLi_query($con, $sql) or dIE("Error in selecting ".MysqLi_error($con));$response = array();if(MysqLi_num_rows($result) > 0){ while($row = MysqLi_fetch_array($result)) { array_push($response, array("ID"=>$row[0],"word"=>$row[1],"meaning"=>$row[2])); $retrIEve = $row[1]; } echo Json_encode(array("server_response" => $retrIEve));}else{ echo "RetrIEve Failed";}MysqLi_close($con);?>
这是我在WAMP phpmyadmin中的tblcheckword
数据库名称=“检查”
这是我的logcat错误.
08-19 14:10:48.367 23305-23536/com.example.keam.lastnato E/AndroIDRuntime: FATAL EXCEPTION: AsyncTask #1 Process: com.example.keam.lastnato, PID: 23305 java.lang.RuntimeException: An error occured while executing doInBackground() at androID.os.AsyncTask.done(AsyncTask.java:300) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at androID.os.AsyncTask$SerialExecutor.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841) Caused by: java.lang.RuntimeException: Can't create handler insIDe thread that has not called Looper.prepare() at androID.os.Handler.<init>(Handler.java:200) at androID.os.Handler.<init>(Handler.java:114) at androID.Widget.Toast$TN.<init>(Toast.java:372) at androID.Widget.Toast.<init>(Toast.java:105) at androID.Widget.Toast.makeText(Toast.java:264) at com.example.keam.lastnato.MainActivityreadThis.doInBackground(MainActivity.java:120) at com.example.keam.lastnato.MainActivityreadThis.doInBackground(MainActivity.java:61) at androID.os.AsyncTask.call(AsyncTask.java:288) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at androID.os.AsyncTask$SerialExecutor.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841) 08-19 14:10:49.969 23305-23536/com.example.keam.lastnato I/Process: Sending signal. PID: 23305 SIG: 9
@H_403_42@解决方法:更改word = Json_data.getString(result); to word = Json_data.getString(“server_response”);
更新:
public voID select(){ readThis hello = new readThis(); hello.execute(new String[] {url});}private class ReadThis extends AsyncTask<String, VoID, String> { @OverrIDe protected String doInBackground(String... params) { ArrayList<nameValuePair> nameValuePairs = new ArrayList<nameValuePair>(); nameValuePairs.add(new BasicnameValuePair("ID",ID)); try { httpClIEnt httpclIEnt = new DefaulthttpClIEnt(); httpPost httppost = new httpPost(params[0]); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); httpResponse response = httpclIEnt.execute(httppost); httpentity entity = response.getEntity(); is = entity.getContent(); Log.e("pass 1", "connection success "); } catch(Exception e) { Log.e("Fail 1", e.toString()); Toast.makeText(getApplicationContext(), "InvalID IP Address", Toast.LENGTH_LONG).show(); } try { BufferedReader reader = new BufferedReader (new inputStreamReader(is,"iso-8859-1"),8); StringBuilder sb = new StringBuilder(); while ((line = reader.readline()) != null) { sb.append(line); } is.close(); result = sb.toString(); Log.e("pass 2", "connection success "); } catch(Exception e) { Log.e("Fail 2", e.toString()); } } return result ; } @OverrIDe protected voID onPostExecute(String result) { try { JsONObject Json_data = new JsONObject(result); word = Json_data.getString("server_response"); Toast.makeText(getBaseContext(), "name: " + word, Toast.LENGTH_SHORT).show(); } catch(JsONException e) { Log.e("Fail 3", e.toString()); Log.e("log_tag", "Failed data was: " + result); } } @OverrIDe protected voID onPreExecute() {} @OverrIDe protected voID onProgressUpdate(VoID... values) {} }
总结 以上是内存溢出为你收集整理的php – 如何解决org.json.JSONException中的错误?全部内容,希望文章能够帮你解决php – 如何解决org.json.JSONException中的错误?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)