Я хочу отправить ключ параметра переменной из Android в переменную FPDF на API-сервере, которая будет генерировать набор отчетов на основе диапазона дат, но переменная в API FPDF не получала отправленную переменную Android.
Каксделать это?Какой Call<>
мне следует использовать?
Я уже пытался использовать Call<ResponseBody>
для отправки параметра.Я также пытался проверить его, если подключение к целевому файлу успешно установлено ниже onResponse
, и оно ответило верно.
Но, когда пришло время загрузки файла в устройство, я попытался нацелить ссылку для загрузки прямо напуть к файлу на сервере.
Но после открытия загруженного файла я получаю пустую таблицу данных, объясняющую, что переменная в FPDF не получила отправленную переменную Android.
Вот мои downloadPDF () метод, для отправки параметра в API FPDF:
private void downloadPDF() {
RestApi api = RetroFit.getInstanceRetrofit();
Call<ResponseBody> printCall = api.getPrint(
strDateFrom,
strDateTo
);
printCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
downloadManager();
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Toast.makeText(getContext(), "No data :(", Toast.LENGTH_SHORT).show();
}
});
}
Интерфейс метод:
@FormUrlEncoded
@POST("somepath/get_print.php")
Call<ResponseBody> getPrint(
@Field("keyDateFrom") String from,
@Field("keyDateTo") String to
);
downloadManager() метод:
private void downloadManager() {
DownloadManager downloadService = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse("http://someweb.com/somefolder/get_print.php");
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
И мой get_print.php скрипт:
<?php
include 'config.php';
$keyDateFrom = $_POST["keyDateFrom"];
$keyDateTo = $_POST["keyDateTo"];
require('fpdf.php');
$pdf = new FPDF('P','mm','A4');
$pdf->AddPage();
$pdf->Image('logo_hsp_transparan.png',10,10,30,15);
$pdf->SetLeftMargin(20);
$pdf->SetFont('Arial','B',16);
$pdf->Cell(190,7,'Daftar Peminjaman Kendaraan HSPnet',0,1,'C');
$pdf->SetFont('Arial','B',9);
$pdf->Cell(190,7,'Jl. Tanah Merdeka No.1, RT.10/RW.3, Rambutan, Ciracas, Kota Jakarta Timur',0,1,'C');
$pdf->Cell(10,7,'',0,1);
$pdf->SetFont('Arial','B',9);
$pdf->Cell(190,7, $keyDateFrom ,0,1,'C');
$pdf->SetFont('Arial','',9);
$pdf->Cell(190,7,'to',0,1,'C');
$pdf->SetFont('Arial','B',9);
$pdf->Cell(190,7, $keyDateTo ,0,1,'C');
$pdf->SetLeftMargin(32);
$pdf->SetFont('Arial','B',8);
$pdf->Cell(10,7,'',0,1,'C');
$pdf->Cell(6,6,'NO',1,0,'C');
$pdf->Cell(35,6,'TUJUAN',1,0,'C');
$pdf->Cell(23,6,'PEMINJAM',1,0,'C');
$pdf->Cell(35,6,'KENDARAAN',1,0,'C');
$pdf->Cell(28,6,'JAM BERANGKAT',1,0,'C');
$pdf->Cell(28,6,'JAM PULANG',1,1,'C');
$pdf->SetFont('Arial','',8);
$query = mysqli_query($link,
"SELECT some_column
FROM `SOME_TABLE`
WHERE (DATE(some_column) BETWEEN '$keyDateFrom' AND '$keyDateTo')");
$i = 1;
while ($row = mysqli_fetch_array($query)){
$pdf->Cell(6,6,$i++,1,0,'C');
$pdf->Cell(35,6,$row['some_column'],1,0);
}
$pdf->Output();
?>
Я имею в виду, как сделать переменную при получении FPDF APIзначение из Android, поэтому Android может загрузить сгенерированный файл в соответствии с запросом?
Я уже пытался сделать это на Postman, он возвращает правильный форматированный PDF, но не в Android.
Как это сделать?Какая альтернатива?Цени любую помощь.