Привет, я хочу получить доступ к моим веб-записям в приложении для Android. Поступая таким образом, я использую JSON для этого и PHP. Это URL моего json-файла: здесь
Но проблема в том, что это просто отображение php-кода. Мне нужно иметь доступ к этому файлу. 🙁 Любые идеи, что я делаю здесь? Помощь очень ценится мной.
Это то, что я пробовал до сих пор:
<?php include('connectdb.php'); $sql = "SELECT salesordercard_code, location_from, location_to, salesmancode FROM salesorderingcard"; $result = mysql_query($sql); if($result === FALSE) { die(mysql_error()); // TODO: better error handling } $set = array(); while($row1 = mysql_fetch_assoc($result)) { $set[] = $row1; } header('Content-type: application/json'); echo json_encode($set); ?>
MainActivity.class
@Override protected Void doInBackground(Void... params) { // Create the array arraylist = new ArrayList<HashMap<String, String>>(); // Retrive JSON Objects from the given website URL in JSONfunctions.class jsonobject = JSONFunctions.getJSONfromURL("http://www.shoppersgroup.net/vanmanagement/results.php"); try { // Locate the array name jsonarray = jsonobject.getJSONArray("posts"); for (int i = 0; i < jsonarray.length(); i++) { HashMap<String, String> map = new HashMap<String, String>(); jsonobject = jsonarray.getJSONObject(i); //Log.i(MainActivity.class.getName(), jsonobject.getString("movie_name")); // Retrive JSON Objects map.put(TAG_CODE, jsonobject.getString("salesordercard_code")); map.put(TAG_LOCATION_FROM, jsonobject.getString("location_from")); map.put(TAG_LOCATION_TO, jsonobject.getString("location_to")); // Set the JSON Objects into the array arraylist.add(map); } } catch (JSONException e) { Log.e("Error", e.getMessage()); e.printStackTrace(); } return null; }
Logcat:
11-18 02:35:08.521: E/log_tag(1047): Error parsing data org.json.JSONException: Value [{"salesmancode":"SLMAN001","location_to":"MAIN","location_from":"IN-TRANSIT","salesordercard_code":"SLESO0001"},{"salesmancode":"SLMAN001","location_to":"MAIN","location_from":"IN-TRANSIT","salesordercard_code":"SLESO0002"}] of type org.json.JSONArray cannot be converted to JSONObject
Сначала как Json String
[ // Its an Array "posts",// Its not an Array and its index is 0 so we will not use index 0 {//Index1 "salesordercard_code": "SLESO0001", "location_from": "IN-TRANSIT", "location_to": "MAIN", "salesmancode": "SLMAN001" }, {//index2 "salesordercard_code": "SLESO0002", "location_from": "IN-TRANSIT", "location_to": "MAIN", "salesmancode": "SLMAN001" } ]
Измените метод doInBackground (), как показано ниже,
@Override protected Void doInBackground(Void... params) { // Create the array arraylist = new ArrayList<HashMap<String, String>>(); // Retrive JSON Objects from the given website URL in JSONfunctions.class jsonobject = JSONFunctions.getJSONfromURL("http://www.shoppersgroup.net/vanmanagement/results.php"); try { // Locate the array name jsonarray = new JSONArray(jsonobject.toString()); for (int i = 1; i < jsonarray.length(); i++) {// strat from index1 HashMap<String, String> map = new HashMap<String, String>(); JSONObject jsonobj = jsonarray.getJSONObject(i); //Log.i(MainActivity.class.getName(), jsonobj.getString("movie_name")); // Retrive JSON Objects map.put(TAG_CODE, jsonobj.getString("salesordercard_code")); map.put(TAG_LOCATION_FROM, jsonobj.getString("location_from")); map.put(TAG_LOCATION_TO, jsonobj.getString("location_to")); // Set the JSON Objects into the array arraylist.add(map); } } catch (JSONException e) { Log.e("Error", e.getMessage()); e.printStackTrace(); } return null; }
Надеюсь, это решит вашу проблему.
Ваш файл results.json
не может запускать php, поскольку он не обрабатывается как PHP, его обрабатывают как json-файл, и поэтому он отображает текст внутри него как текст.
Переименуйте его в results.php
и results.php
затем, он должен распечатать json закодированные данные с необходимыми результатами.