Значение john типа java.lang.String не может быть преобразовано в JSONObject.

Я пытаюсь создать приложение для Android, которое отправляет параметр в код PHP как где

условие запроса в этом PHP-коде, я должен получить в log.i результат запроса, но

Я получаю следующую ошибку

org.json.JSONException: значение john типа java.lang.String не может быть преобразовано в JSONObject.

Основная деятельность

 public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

try {
JSONObject toSend = new JSONObject();
toSend.put("msg", "3");

JSONTransmitter transmitter = new JSONTransmitter();
transmitter.execute(new JSONObject[] {toSend});

} catch (JSONException e) {
e.printStackTrace();
}

}

}

Класс JSONTransmitter.

public class JSONTransmitter extends AsyncTask<JSONObject, JSONObject, JSONObject> {

String url = "http://192.168.1.10:89/b.php";


protected JSONObject doInBackground(JSONObject... data) {
JSONObject json = data[0];
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 100000);
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitNetwork().build());
JSONObject jsonResponse = null;

HttpPost post = new HttpPost(url);
try {
StringEntity se = new StringEntity("json="+json.toString());
post.addHeader("content-type", "application/x-www-form-urlencoded");
post.setEntity(se);

HttpResponse response;
response = client.execute(post);
String resFromServer = org.apache.http.util.EntityUtils.toString(response.getEntity());

jsonResponse=new JSONObject(resFromServer);
Log.i("Response from server", jsonResponse.getString("msg"));
Toast.makeText(null, resFromServer, Toast.LENGTH_LONG);
} catch (Exception e) { e.printStackTrace();}

return jsonResponse;
}

}

PHP-код

<?php
mysql_connect("localhost", "root", "password")
or die(mysql_error());
mysql_select_db("test") or die(mysql_error());


$result = mysql_query(" select  part_name from  Services_parts where  part_id=  1 ")
or die(mysql_error());

$row = mysql_fetch_array( $result );


$j_out = new stdClass();
$j_out->part_name= $row['part_name'];

echo json_encode($j_out);
?>

-1

Решение

Вы выполняете код, который эквивалентен этому:

JSONObject obj = new JSONObject("john");

что, очевидно, приводит к исключению

это означает, что ваши данные JSON с сервера находятся в неправильном формате. Проблема, вероятно, в вашем php-коде, для возврата массива элементов в json адаптируйте ниже php + java-код:

$res_items = array();
for ( ... )  {
array_push($res_items, $some_item);
}
$js_result = get_json_encode(array(
"results" => $res_items
));
echo $js_result;

тогда в коде Java:

JSONObject jsResp = new JSONObject(serverJsonResult);
JSONArray results = jsResp.getJSONArray("results");
for (int n = 0; n < results.length(); ++n) {
JSONObject js_row = results.getJSONObject(n);
// ...
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]