0
發送的ArrayList
我試圖發送一個ArrayList這是一個編碼字符串並獲得使用Ksoap2
了java.lang.RuntimeException:無法序列:[abc.docx,def.docx]
這是我如何將其轉換爲字節數組,並向其傳遞:
public static String convertFileToByteArray(File f) {
byte[] byteArray = null;
try {
InputStream inputStream = new FileInputStream(f);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024 * 11];
int bytesRead = 0;
while ((bytesRead = inputStream.read(b)) != -1) {
bos.write(b, 0, bytesRead);
}
byteArray = bos.toByteArray();
Log.e("Byte array", ">" + byteArray);
} catch (IOException e) {
e.printStackTrace();
}
return Base64.encodeToString(byteArray, Base64.NO_WRAP);
}
添加它,如圖所示ArrayList中:
ArrayList<String> encodedlist = new ArrayList<String>();
encodedString = convertFileToByteArray(mySelectedFile);
encodedlist.add(encodedDocument);
這是我的代碼,將其發送到服務器端:
public static boolean invokeUploadMultipleDocuments(String RandomFolder, ArrayList FileNames, String webMethodName) {
boolean UploadStatus = false;
// Create request
SoapObject request = new SoapObject(NAMESPACE, webMethodName);
// Property which holds input parameters
PropertyInfo filenamePI = new PropertyInfo();
// Set Filenames
filenamePI.setName("FileNames");
// Set Value
filenamePI.setValue(FileNames);
// Set dataType
filenamePI.setType(ArrayList.class);
// Add the property to request object
request.addProperty(filenamePI);
// Create envelope
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
// Set output SOAP object
envelope.setOutputSoapObject(request);
// Create HTTP call object
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
// Invoke web service
androidHttpTransport.call(SOAP_ACTION+webMethodName, envelope);
// Get the response
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
// Assign it to boolean variable variable
UploadDocumentStatus = Boolean.parseBoolean(response.toString());
} catch (Exception e) {
//Assign Error Status true in static variable 'errored'
MainActivity.errored = true;
e.printStackTrace();
}
//Return booleam to calling object
return UploadStatus;
}