Отправить изображение с Android в веб-сервис Soap ⇐ Android
-
Anonymous
Отправить изображение с Android в веб-сервис Soap
Я хочу отправить изображение с устройства Android в веб-службу SOAP. Раньше я загружал изображение с сервера с устройства Android с помощью веб-сервиса SOAP, но на этот раз я хочу отправить файл на сервер, к сожалению, столкнулся с проблемой при отправке файла на сервер. Я пробовал с Base64 и String, к сожалению, данные на сервер не отправляются и выдает ошибку.
Текст ошибки, когда я отправляю pi.setType с типом String.class:
414 Request-uri слишком велик
Текст ошибки при отправке pi.setType с типом Base64.class:
Серверу не удалось обработать запрос.
//Декодируем растровое изображение: Строка закодирована = ""; закодировано =ImageUtil.convert(bitmapOut); // Клиентская часть: @Override protected String doInBackground(String... params) { System.out.println("@line AcntCode:" + params[1]); System.out.println("@line AttachFile:" + params[2]); Запрос SoapObject = новый SoapObject(NAMESPACE, METHOD_NAME_FunAttachFile); PropertyInfo пи; пи = новый PropertyInfo(); pi.setName(Param_FunAttachFile_AcntCode); pi.setValue(параметры[1]); pi.setType(String.class); request.addProperty(пи); пи = новый PropertyInfo(); pi.setName(Param_FunAttachFile_AttachFile); pi.setValue(params[2]); pi.setType(Base64.class); request.addProperty(пи); Конверт SoapSerializationEnvelope = новый SoapSerializationEnvelope(SoapEnvelope.VER12); конверт.dotNet = правда; конверт.setOutputSoapObject(запрос); Строковый путь = HTTP + _ip + ASMX; пытаться { HttpTransportSE androidHttpTransport = новый HttpTransportSE (путь, 10000); androidHttpTransport.call(SOAP_ACTION_FunAttachFile, конверт); Ответ SoapPrimitive = (SoapPrimitive) конверт.getResponse(); Strresponse = ответ.toString(); } catch (Исключение е) { е.printStackTrace(); Строка stackTrace = Log.getStackTraceString(e); System.out.println("@line e.getMessage: " + e.getMessage()); System.out.println("@line stackTrace: " + stackTrace); } вернуть ноль; Класс преобразования растрового изображения в base64:
публичный класс ImageUtil { общедоступное статическое преобразование растрового изображения (String base64Str) выдает IllegalArgumentException { byte[] decodedBytes = Base64.decode( base64Str.substring(base64Str.indexOf(",") + 1), Base64.DEFAULT ); return BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length); } public static String Convert (Растровое изображение) { ByteArrayOutputStream outputStream = новый ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, выходной поток); return Base64.encodeToString(outputStream.toByteArray(), Base64.DEFAULT); }
Серверная сторона:
Открытая функция FunAttachFile(ByVal AcntCode As String, ByVal AttachFile как строка) как логическое значение Тусклый журнал как новый класс WriteToTextFileClass log.WriteTxt("Начать запрос...") Вернуть истину Конечная функция Конечно, я пробовал и другие способы, но, к сожалению, не решилось. Если нужны дополнительные документы, я их пришлю. Я приветствую любые рекомендации.
Я хочу отправить изображение с устройства Android в веб-службу SOAP. Раньше я загружал изображение с сервера с устройства Android с помощью веб-сервиса SOAP, но на этот раз я хочу отправить файл на сервер, к сожалению, столкнулся с проблемой при отправке файла на сервер. Я пробовал с Base64 и String, к сожалению, данные на сервер не отправляются и выдает ошибку.
Текст ошибки, когда я отправляю pi.setType с типом String.class:
414 Request-uri слишком велик
Текст ошибки при отправке pi.setType с типом Base64.class:
Серверу не удалось обработать запрос.
//Декодируем растровое изображение: Строка закодирована = ""; закодировано =ImageUtil.convert(bitmapOut); // Клиентская часть: @Override protected String doInBackground(String... params) { System.out.println("@line AcntCode:" + params[1]); System.out.println("@line AttachFile:" + params[2]); Запрос SoapObject = новый SoapObject(NAMESPACE, METHOD_NAME_FunAttachFile); PropertyInfo пи; пи = новый PropertyInfo(); pi.setName(Param_FunAttachFile_AcntCode); pi.setValue(параметры[1]); pi.setType(String.class); request.addProperty(пи); пи = новый PropertyInfo(); pi.setName(Param_FunAttachFile_AttachFile); pi.setValue(params[2]); pi.setType(Base64.class); request.addProperty(пи); Конверт SoapSerializationEnvelope = новый SoapSerializationEnvelope(SoapEnvelope.VER12); конверт.dotNet = правда; конверт.setOutputSoapObject(запрос); Строковый путь = HTTP + _ip + ASMX; пытаться { HttpTransportSE androidHttpTransport = новый HttpTransportSE (путь, 10000); androidHttpTransport.call(SOAP_ACTION_FunAttachFile, конверт); Ответ SoapPrimitive = (SoapPrimitive) конверт.getResponse(); Strresponse = ответ.toString(); } catch (Исключение е) { е.printStackTrace(); Строка stackTrace = Log.getStackTraceString(e); System.out.println("@line e.getMessage: " + e.getMessage()); System.out.println("@line stackTrace: " + stackTrace); } вернуть ноль; Класс преобразования растрового изображения в base64:
публичный класс ImageUtil { общедоступное статическое преобразование растрового изображения (String base64Str) выдает IllegalArgumentException { byte[] decodedBytes = Base64.decode( base64Str.substring(base64Str.indexOf(",") + 1), Base64.DEFAULT ); return BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length); } public static String Convert (Растровое изображение) { ByteArrayOutputStream outputStream = новый ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, выходной поток); return Base64.encodeToString(outputStream.toByteArray(), Base64.DEFAULT); }
Серверная сторона:
Открытая функция FunAttachFile(ByVal AcntCode As String, ByVal AttachFile как строка) как логическое значение Тусклый журнал как новый класс WriteToTextFileClass log.WriteTxt("Начать запрос...") Вернуть истину Конечная функция Конечно, я пробовал и другие способы, но, к сожалению, не решилось. Если нужны дополнительные документы, я их пришлю. Я приветствую любые рекомендации.
Мобильная версия