Может ли кто-нибудь предложить решение вышеперечисленного?
На данный момент все, что я хочу сделать, это отправить запрос JSON на мой сервер (например: {picture: jpg, color: green}), получить доступ к базе данных PHP, а затем вернуть имя файла из базы данных сервера (затем получить андроид скачать файл – не проблема)
Может кто-нибудь предложить сначала Android Framework, который поможет мне в этом. – POST JSON в php-файл на моем сервере
А во-вторых, php-скрипт, который превратит JSON в читаемый в формате php (доступ к базе данных тоже не является проблемой, но я не могу заставить JSON в объект, чтобы он совпал с базой данных)
благодаря
РЕДАКТИРОВАТЬ
Спасибо за ссылки ниже, но я не прошу об этом из лени, это из-за досады на мою кажущуюся неспособность отправить строку JSON и получить правильный ответ.
Поэтому позвольте мне показать код и выяснить, почему то, что я думаю, должно произойти, не происходит:
GET URL (используя GET, чтобы я мог показать работу)
http://example.com/process/json.php?service=GOOGLE <?php // decode JSON string to PHP object $decoded = json_decode($_GET['json']); // I'm not sure of which of the below should work but i've tried both. $myService = $decoded->service; //$service should equal: GOOGLE $myService = $decoded->{'service'}; //$service should equal: GOOGLE // but the result is always $myService = null - why? ?>
Хорошо, у меня есть PHP. Нижеследующее возвращает POST-данные и возвращает службу
<?php $data = file_get_contents('php://input'); $json = json_decode($data); $service = $json->{'service'}; print $service; ?>
и Android-код:
in onCreate ()
path = "http://example.com/process/json.php"; HttpClient client = new DefaultHttpClient(); HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); // Timeout // Limit HttpResponse response; JSONObject json = new JSONObject(); try { HttpPost post = new HttpPost(path); json.put("service", "GOOGLE"); Log.i("jason Object", json.toString()); post.setHeader("json", json.toString()); StringEntity se = new StringEntity(json.toString()); se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); post.setEntity(se); response = client.execute(post); /* Checking response */ if (response != null) { InputStream in = response.getEntity().getContent(); // Get the // data in // the // entity String a = convertStreamToString(in); Log.i("Read from Server", a); } } catch (Exception e) { e.printStackTrace(); }
и где бы вы ни захотели
private static String convertStreamToString(InputStream is) { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line = null; try { while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); }
На стороне PHP все, что вам нужно, это встроенный json_decode , который будет десериализовать ваш json и вернуть объект (или ассоциативный массив, если вы передадите true
в качестве второго аргумента).
На стороне Android вы, вероятно, будете использовать библиотеки HTTP для выполнения вашего HTTP-запроса и обработки ответа. (Но кто-то, кто на самом деле был разработан для Android, может исправить меня)