Android JSON на PHP сервер и обратно - PullRequest
4 голосов
/ 14 января 2011

Кто-нибудь может предложить решение для вышеупомянутого?

Пока все, что я хочу сделать, это отправить запрос JSON на мой сервер (например: {picture: jpg, color: green}), получить доступ к базе данных PHP, а затем вернуть имя файла из базы данных сервера ( тогда получите андроид для скачивания файла - не проблема)

Может кто-нибудь сначала предложить Android Framework, который поможет мне в этом. - POST JSON в php-файл на моем сервере

И, во-вторых, сценарий php, который превратит JSON в читаемый формат php (доступ к базе данных также не является проблемой, но я не могу получить JSON в объект, который затем сопоставляется с базой данных)

спасибо

EDIT

Спасибо за ссылки ниже, но я не спрашиваю об этом из-за лени, это досадно из-за моей кажущейся неспособности отправить строку 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?


?>

Ответы [ 2 ]

14 голосов
/ 14 января 2011

ОК, у меня есть PHP. Ниже извлекаются данные POST и возвращается сервис

<?php

$data = file_get_contents('php://input');
$json = json_decode($data);
$service = $json->{'service'};

print $service;

?>

и код Android:

в 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();
}
2 голосов
/ 14 января 2011

На стороне PHP все, что вам нужно, это встроенный json_decode , который десериализует ваш json и вернет объект (или ассоциативный массив, если вы передадите true в качестве второго аргумента).

На стороне Android вы, вероятно, будете использовать HTTP-библиотеки для выполнения HTTP-запроса и обработки ответа.(Но кто-то, кто действительно разрабатывает для Android, может исправить меня)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...