Я работаю над проектом Android, приложению необходимо загрузить файл PDF, созданный из Интернета. Я использую Laravel и DOMPdf для создания файла PDF (зависимость от laravel). Я хочу загрузить файл на Android с модификацией, но когда я регистрирую ответ, он говорит:
onResponse: Ответ {protocol = http / 1.0, code = 500, message = Internal Server
Ошибка, URL = http://10.0.2.2/warehouse-api/public/api/get-stock-out}
Когда я пробую это на chrome / почтальоне, он работает, и он загрузит сгенерированный файл PDF.
Я хочу знать, что здесь происходит.
Вот мой код:
ReportFragment.java
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragment_stock_out_report, container, false);
generateBtn = v.findViewById(R.id.btn_generate_stockout);
service = RetrofitBuilder.getRetrofit().create(ReportService.class);
generateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: Clicked");
if(checkPermission()){
call = service.getStockOutReport();
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, final Response<ResponseBody> response) {
Log.w(TAG, "onResponse: " + response);
final String filename = System.currentTimeMillis() /1000L+".pdf";
if(response.isSuccessful()){
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... voids) {
try{
File path = Environment.getExternalStorageDirectory();
File file = new File(path+File.separator+"stock-out"+File.separator,filename);
file.getParentFile().mkdirs();
FileOutputStream fileOutputStream = new FileOutputStream(file);
IOUtils.write(response.body().bytes(), fileOutputStream);
}catch (IOException e){
Log.e(TAG, "Erorr While Writing Files");
Log.e(TAG, e.toString());
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
Toast.makeText(getActivity(), "Download Success", Toast.LENGTH_SHORT).show();
}
}.execute();
Log.d(TAG, "onResponse2: " +response);
}else{
Toast.makeText(getActivity(), "Download Fail", Toast.LENGTH_SHORT).show();
Log.d(TAG, "onResponse3: " +response);
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.d(TAG, "onFailure: " + t.getMessage());
Toast.makeText(getActivity(), t.getMessage(), Toast.LENGTH_LONG).show();
}
});
}else{
requestPermission();
}
}
});
return v;
}
ReportService.java
@GET("get-stock-out")
@Streaming
Call<ResponseBody> getStockOutReport();
ReportController.php
public function getWeeklyStockOutReport()
{
$stockOuts = StockOut::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->get();
$pdf = PDF::loadView('stock-out', compact('stockOuts'));
return $pdf->download(Carbon::now().'-'.'stock-out.pdf');
}
Я ожидаю, что приложение для Android сможет загрузить файл .pdf
Thankyou!