Данные неполные при переносе из PHP в Java

0

При попытке отправить длинную строку (кодированное изображение Base64) с php на java передается только часть данных. Когда я протестировал приложение на моем сервере apache localhost, строка была отправлена полностью, и приложение работало правильно. Но когда я перенес код на внешний сервер, на Java была получена лишь часть данных. Когда я вывожу данные в браузере, длинная строка отображается правильно.

Это код, который я использовал для отправки данных:

//get the data from mysql result
while($row = mysqli_fetch_assoc($result))
{
    // get the fotopath
    $fotoRow = mysqli_fetch_array ( $fotoResult, MYSQL_NUM );
    $foto = $fotoRow[0];

    //replace backslashes
    $fotoFormatted = $foto; //str_replace($backslash, $slash, $foto);

    //get the picture data
    $im = file_get_contents("http://www.mywebsite.com" . $fotoFormatted, true);

    //encode the picture data
    $imdata = base64_encode($im);

    //add the encoded string to the data array
    $row ['foto'] = $imdata;
    $output[] = $row;
}

//output the data as a json array
print(json_encode($output))

Это код, который я использовал для получения данных:

//get the url to the script to connect with
String link = "http://mywebsite/script.php";

//get the data to send to the script
String data = URLEncoder.encode("userid", "UTF-8") + "="
                + URLEncoder.encode(userid, "UTF-8");

//make a new HttpURLConnection
URL url = new URL(link);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput(true);

//make a new OutputStreamWriter with the HttpURLConnection
OutputStreamWriter wr = new OutputStreamWriter(
                   conn.getOutputStream());

//write the data and flush the remaining data
wr.write(data);
wr.flush();

//make a new BufferedReader with the given connection
BufferedReader reader = new BufferedReader(new InputStreamReader(
               conn.getInputStream()));

//define variables
JSONArray jsonArray = null;
String line = null;

//read the data from the server     
while ((line = reader.readLine()) != null) {
        jsonArray = new JSONArray(line);
        }

//disconnect the connection
conn.disconnect();

//return the data for further use
return jsonArray;

Мой вопрос: почему данные с внешнего сервера неполны, пока данные, полученные с локального сервера, завершены, и что я могу сделать для решения этой проблемы.

  • 0
    Вы проверили, непосредственно открывая URL в браузере, получаете ли вы полные данные из вашего PHP-скрипта?
  • 0
    Чтобы расширить вопрос о kaysuh, вы отлаживали значения из своего Java-кода?
Теги:
bufferedreader

1 ответ

0
Лучший ответ

Я нашел решение, проблема заключалась в том, что пробелы были включены в путь некоторых файлов (довольно плохой дизайн, я думаю), из-за этого 404-страничная страница была закодирована в base64, и таким образом были добавлены неправильные данные. в моем локальном серверном приложении я не настроил страницу 404, поэтому он просто вернет null, и у меня был резерв, чтобы справиться с этой ситуацией. Я заменил все пробелы на %20, и ошибки были разрешены.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню