#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. я добавил разрешения на чтение и запись.