получить путь к файлу PDF из внутреннего хранилища Android для запроса soap в Android

#android #pdf #soap

#Android #PDF #soap

Вопрос:

Я могу успешно создать PDF, используя iText, и я могу сохранить во внутреннем хранилище с получением пути к файлу.

При нажатии кнопки я должен вызвать службу, передав 12 параметров, и один из них — это сохраненный путь к файлу PDF из внутреннего хранилища телефона.

ПРОБЛЕМА File not found error появляется в журнале сервера даже при отладке через контрольные точки для arg0 параметра.

Как мне получить путь к файлу PDF, чтобы прочитать его как значение параметра?

     class Generatepdf extends AsyncTask<Void, Void, String> {

        @Override
        protected void onPreExecute() {
            showDialog(CONNECTING_PROGRESS_DIALOG);
        }

        @Override
        protected String doInBackground(Void... params) {
            String outRes;
            File myInternalFile;
            HttpTransportSE androidTransport = null;
            try {
                final String NAMESPACE = "http://ws.xxxx.xxx.com/";
                final String METHOD_NAME = "getPDF";
                final String SOAP_ACTION = "";
                final String WSDL_URL = "http://localhost:8080/services/getpdf?wsdl";
                SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

                PropertyInfo propOne = new PropertyInfo();
                PropertyInfo propTwo = new PropertyInfo();
                PropertyInfo propThree = new PropertyInfo();
                PropertyInfo propFour = new PropertyInfo();
                PropertyInfo propFive = new PropertyInfo();
                PropertyInfo propSix = new PropertyInfo();
                PropertyInfo propSeven = new PropertyInfo();
                PropertyInfo propEight = new PropertyInfo();
                PropertyInfo propNine = new PropertyInfo();
                PropertyInfo propTen = new PropertyInfo();
                PropertyInfo propEleven = new PropertyInfo();
                PropertyInfo propTwelve = new PropertyInfo();
                PropertyInfo propThirteen = new PropertyInfo();

//parameter one
                File readpdfFile = new File( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "/NewPDF_.pdf");

                propOne.setName("arg0");
                propOne.setValue(readpdfFile);
                // propOne.setValue(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)   "/NewPDF_");
                //   propOne.setValue(Environment.getExternalStorageDirectory().getPath()   "/PDF/NewPDF_.pdf");
                request.addProperty(propOne);

//parameter two
                propTwo.setName("arg1");
                propTwo.setValue("xxxxxxxxxxxx (some 12 digit number)");
                request.addProperty(propTwo);
//parameter three
                propThree.setName("arg2");
                propThree.setValue("ACuoAEB6ADmwAIAuADy4AIDCAEWkAIBwAFYwAIBbAFrAAIAqAF9UAIBnAGE8AEBZAGs8AEDmAGu4AIB3AG0wAIA2AHRQAEDFAHS0AIBEAIBMAIDjAIU0AEB6AIcwAIA4AIxYAICKAJCkAEBwAJ50AIBSAKhYAIBwAKoYAECBAKqMAICTAKykAICbALakAI");
                request.addProperty(propThree);
//parameter four
                propFour.setName("arg3");
                propFour.setValue("name");
                request.addProperty(propFour);
//parameter five
                propFive.setName("arg4");
                propFive.setValue("Test");
                request.addProperty(propFive);
//parameter Six
                propSix.setName("arg5");
                propSix.setValue("cityname");
                request.addProperty(propSix);
//parameter Seven
                propSeven.setName("arg6");
                propSeven.setValue("First");
                request.addProperty(propSeven);
//parameter Eight
                propEight.setName("arg7");
                propEight.setValue("BottomRight");
                request.addProperty(propEight);
//parameter Nine
                propNine.setName("arg8");
                propNine.setValue("null");
                request.addProperty(propNine);
//parameter ten
                propTen.setName("arg9");
                propTen.setValue("Biometric");
                request.addProperty(propTen);
//parameter Eleven
                propEleven.setName("arg10");
                propEleven.setValue("false");
                request.addProperty(propEleven);
//parameter Twelve
                propTwelve.setName("arg11");
                propTwelve.setValue("device1341I089864");
                request.addProperty(propTwelve);
//parameter Thirteen
                propThirteen.setName("arg12");
                propThirteen.setValue("true");
                request.addProperty(propThirteen);

//soap method call
                SoapSerializationEnvelope envelope2 = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope2.setOutputSoapObject(request);

                envelope2.implicitTypes = false;
                androidTransport = new HttpTransportSE(WSDL_URL);
                androidTransport.debug = true;
                androidTransport.call(SOAP_ACTION, envelope2);

                SoapObject response2 = (SoapObject) envelope2.bodyIn;
                String requestDump = androidTransport.requestDump;
                String responseDump = androidTransport.responseDump;

                Log.i("", "Request: "   requestDump);
                Log.i("", "Response: "   responseDump);

                outRes = response2.toString();

                Result= outRes;
                Log.d("Result", Result);

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return Resu<
        }

        @Override
        protected void onPostExecute(String response) {
            removeDialog(CONNECTING_PROGRESS_DIALOG);
            runOnUiThread(new Runnable() {
                public void run() {

                    responseTxtView15.setText("RESPONSE   "   Result);
                }
            });
        }
    }
  

Комментарии:

1. «и может храниться во внутреннем хранилище» — код в вашем вопросе относится к внешнему хранилищу , а не к внутреннему хранилищу . Возможно, вы захотите отредактировать свой вопрос, чтобы показать, где вы создаете этот PDF-файл.

2. вы добавили разрешение в файл манифеста?

3. @Ben_Gratvol Я не уверен, но проверьте это. Вы сохранили свой PDF-файл во внутреннем хранилище. Но передавая какой-либо другой внешний путь при вызове сервера. Можете ли вы проверить, что

4. хорошо, первым делом сначала проверьте manifest.xml файл в вашем проекте, если вы поместите эту строку в <использует-разрешение android:name=»android.разрешение. WRITE_EXTERNAL_STORAGE» /> <использует разрешение android:name=»android.permission. READ_EXTERNAL_STORAGE» />

5. я добавил разрешения на чтение и запись.