Не получает полную строку Base64, отправленную из PHP

У меня есть приложение, и мне нужно получить изображения из моей базы данных (прежде чем кто-то спросит, да, это должно быть из базы данных).
В моем PHP файле я отправляю полную строку, но в Android я получаю только половину строки или около того.
У вас есть какие-нибудь подсказки, почему это происходит?
Кто-нибудь может мне помочь?


Код

ServerRequest.Ява:

public void FetchServicoFotoDataInBackground(int CodServico, GetServicoFotoCallBack userCallback) {
    new FetchServicoFotoDataAsyncTasck(CodServico, userCallback).execute();
}


public class FetchServicoFotoDataAsyncTasck extends AsyncTask<Void, Void, ArrayList<String>> {
    ArrayList<String> ltservico;
    int CodServico;
    GetServicoFotoCallBack servCallback;

    public FetchServicoFotoDataAsyncTasck(int CodServico, GetServicoFotoCallBack servicoCallback) {
        this.CodServico = CodServico;
        this.servCallback = servicoCallback;
}

    @Override
    protected ArrayList<String> doInBackground(Void... params) {
        ArrayList<String> returnedServico = null;
        try {

            URL url = new URL(SERVER_ADDRESS + "myphpfile.php");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            Uri.Builder builder = new Uri.Builder()
                    .appendQueryParameter("CodServico", this.CodServico+"");
            final String postParameters = builder.build().getEncodedQuery();
            conn.setConnectTimeout(3000);
            conn.setReadTimeout(3000);
            conn.setRequestMethod("POST");
            conn.setFixedLengthStreamingMode(postParameters.getBytes().length);
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setDoInput(true);
            conn.setDoOutput(true);

            //send the POST out
            PrintWriter pw = new PrintWriter(conn.getOutputStream());
            pw.print(postParameters);
            pw.close();
            conn.connect();
            String result = convertStreamToString(conn.getInputStream());
            JSONArray jArray = new JSONArray(result);
            JSONObject json_data = null;
            returnedServico = new ArrayList<>();
            for (int i = 0; i < jArray.length(); i++) {
                json_data = jArray.getJSONObject(i);
                String imagem = json_data.getString("FotoServico");
                returnedServico.add(imagem);
            }
        } catch (Exception e) {

            e.printStackTrace();
            Log.e("Exception", "Erro[" + e.getMessage() + "] ");
        }
        return returnedServico;
    }

    @Override
    protected void onPostExecute(ArrayList<String> returnedServico) {
        servCallback.done(returnedServico);
        super.onPostExecute(ltservico);
    }
}

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();
}

Моя активность.Ява:

public class verfotoserv extends BaseNavegationActivity {

private LinearLayout lnrVerImages;
private ImageView imageView;
int codservico=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.verfotoserv);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    lnrVerImages = (LinearLayout) findViewById(R.id.lnrImages);

    final Bundle extras = getIntent().getExtras();
    if (extras != null) {
        codservico = extras.getInt("CodServico");
    }

    ServerRequests serverRequests = new ServerRequests(this);
    serverRequests.FetchServicoFotoDataInBackground(codservico, new GetServicoFotoCallBack() {
        @Override
        public void done(ArrayList<String> returnImagens) {
            try {
                if (returnImagens == null) {
                    throw new Exception("Não existem dados ou ocorreu um erro no servidornTente novamente mais tarde.");
                }
                for (String imagem : returnImagens) {
                    Log.i("ImagemRecebida",imagem);
                    byte[] imageAsBytes = Base64.decode(imagem.getBytes(), Base64.DEFAULT);
                    imageView = new ImageView(verfotoserv.this);
                    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                            ViewGroup.LayoutParams.WRAP_CONTENT);
                    params.setMargins(5, 5, 5, 5);
                    imageView.setLayoutParams(params);

                    imageView.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes,0,imageAsBytes.length));
                    imageView.setAdjustViewBounds(true);
                    lnrVerImages.addView(imageView);
                }
            }
            catch (Exception erro){
                erro.printStackTrace();
                showError(erro);
            }
        }
    });

}

private void showError(Exception erro){
    Log.e("Erro", erro.getMessage());
    AlertDialog.Builder dialogBuilder=new android.app.AlertDialog.Builder(verfotoserv.this);
    dialogBuilder.setMessage("Erro:"+erro.getMessage());
    dialogBuilder.setPositiveButton("Ok", null);
    dialogBuilder.show();
}
}

Моя активность.XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
android_orientation="vertical" android_layout_width="match_parent"
android_layout_height="match_parent">

<ScrollView 
    android_id="@+id/scroll1"
    android_layout_width="match_parent"
    android_layout_height="wrap_content">

    <LinearLayout
        android_id="@+id/lnrVerImages"
        android_layout_width="match_parent"
        android_layout_height="wrap_content"
        android_orientation="vertical">

    </LinearLayout>
</ScrollView>
</LinearLayout>

Myphpfile:

<?php
include_once "ligarbd.php";

$codservico = $_POST['CodServico'];

$SQL = "select * from table where CodServico=".$codservico;
$result = mysql_query($SQL);

$imagens = array();
$i = 0;
while ( $postData = mysql_fetch_assoc($result) ) {
    $imagens[$i][FotoServico]=base64_encode($postData['FotoServico']);
    $i = $i + 1;
}

echo json_encode($imagens);
?>

1 ответ

  1. Это была моя ошибка, она получала все, что нужно, чтобы изменить это

    lnrVerImages = (LinearLayout) findViewById(R.id.lnrImages);
    

    До настоящего времени

    lnrVerImages = (LinearLayout) findViewById(R.id.lnrVerImages);