загрузить изображение с Android на веб-сервис

#android #soap #upload

#Android #soap #загрузка

Вопрос:

Как я могу загрузить файл изображения на веб-сервис с помощью SOAP?

Мне нужно, чтобы оно использовалось с SoapObejct, чтобы веб-сервис мог обрабатывать входной файл в его контексте и присваивать ему новое имя файла.

Как? Есть примеры кода?

Yoav

Ответ №1:

Преобразуйте ваш файл изображения в строку Base64 и легко отправьте свою строку с ее именем в веб-сервис. Вам все еще нужен пример кода?

Редактировать

 public static String fileToBase64(String path) throws IOException {
    byte[] bytes = Utilities.fileToByteArray(path);
    return Base64.encodeBytes(bytes);
}

public static byte[] fileToByteArray(String path) throws IOException {
    File imagefile = new File(path);
    byte[] data = new byte[(int) imagefile.length()];
    FileInputStream fis = new FileInputStream(imagefile);
    fis.read(data);
    fis.close();
    return data;
}

public class MyImage  {
public String name;
public String content;
}
  

отправьте свой объект на веб-сервис в виде строки JSON:

в вашей деятельности:

 MyClass myClass = new MyClass();
myClass.name = "a.jpg";
myClass.content = fileToBase64("../../image.jpg");
sendMyObject(myClass);

private void sendMyObject(
        MyImage myImage ) throws Exception {
    // create json string from your object
    Gson gson = new Gson();
    String strJson = gson.toJson(myImage);
    //send your json string here
    //...

}
  

В вашем веб-сервисе преобразуйте вашу строку json в реальный объект, который является точной копией MyClass.

Редактировать:

Также вы можете игнорировать Json и использовать метод webserivce с 2 параметрами: MyWebserviceMethod(string filename, string content); передать строку Base64 в качестве второго параметра.

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

1. Хорошо, как преобразовать его в Base64? и как преобразовать обратно в файл изображения на сервере? Я нашел мало информации об использовании DataHandler — что лучше? Хороший короткий пример кода будет действительно отличным. Спасибо

2. Можно ли использовать Gson с SoapObject? Я использую SoapObject c;… c.adppProperty(…). Должен ли я поместить базовую информацию ^ $ в качестве свойства?

3. как вы реализуете свой веб-сервис? это . Веб-сервис Net?

4. вы отправляете «строку», созданную в формате JSON. вы не отправляете объект «JSON».

5. addProperty(«ParamName», strJson)