Как получить двоичный файл и другие параметры из HttpResponse в Android? - PullRequest
1 голос
/ 10 января 2012

У меня есть Android-клиент с запросом http GET, который вызывает скрипт php на сервере. И скрипт php на моем сервере, который запрашивает базу данных и отображает полученные строки. Теперь, как мне отделить файл blob и другие поля из ответа ?? У меня такое ощущение, что код php испорчен. Будет полезно, если вы укажете мне правильное направление. Спасибо!

My android code:




HttpClient httpClient = new DefaultHttpClient();

        StringBuilder uriBuilder = new StringBuilder("http://192.168.x.x/file_download.php");


        HttpGet request = new HttpGet(uriBuilder.toString());
        HttpResponse response = httpClient.execute(request);

        int status = response.getStatusLine().getStatusCode();
        Log.i("Http Get",response.getStatusLine().toString());

        // we assume that the response body contains the error message
        if (status != HttpStatus.SC_OK) {
     ByteArrayOutputStream ostream = new ByteArrayOutputStream();
     response.getEntity().writeTo(ostream);
         Log.e("HTTP CLIENT", ostream.toString());
        } else {
    //   InputStream content = response.getEntity().getContent();
         // <consume response>

         String type = response.getEntity().toString();
      content.close(); // this will also close the connection

    }

Мой php код:

<?php

$conn = mysql_connect("localhost", "root", "root");

if (!$conn) {
    echo "Unable to connect to DB: " . mysql_error();
    exit;
}

if (!mysql_select_db("MYDB")) {
    echo "Unable to select mydbname: " . mysql_error();
    exit;
}

$sql = "SELECT title, filetype, mode, data, time, application, entity_id 
        FROM   table
        WHERE  id=(select max(id) from file)";

$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    exit;
}

$rows = array();

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {



    $rows[]=$row;



}

echo $rows;

mysql_free_result($result);

?>

1 Ответ

0 голосов
/ 10 января 2012

Я не знаком с функциями PHP mysql_ *, поэтому я не уверен, как выглядит каждая строка.

Я думаю, вам будет проще отформатировать данные на стороне сервера, используя PHP, во что-то, что будет легче анализировать на стороне клиента, например, JSON или XML.

Я тоже не знаю PHP для этой части, но это может быть шагом в правильном направлении: Преобразовать запись MySQL, установленную в строку JSON в PHP

Тогда вы могли бы использовать org.json классы пакетов для анализа на стороне клиента. Это напрямую не решает ваш вопрос о разделении больших двоичных объектов, но если вы сделаете это таким образом, ваши большие двоичные объекты станут доступными для объекта JSON (возможно, с указанием имени столбца).

Удачи.

...