я отправляю изображение в byte[] и 3 строки в веб-службу с помощью ksoap, но у меня это не работает, я не уверен, где я ошибаюсь, при отправке изображения с Android и на приемном конце я помещаю код здесь, пожалуйста, проверьте это Вот как я конвертирую изображение в byte[] на стороне клиента (Android)
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream .toByteArray();
String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
и вот код, в котором я отправляю его в веб-сервис через Ksoap
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("Name", name);
request.addProperty("Email", email);
request.addProperty("Picture", encoded );
request.addProperty("Date", date);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport. call(SOAP_ACTION, envelope);
SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
String str = result.toString();
и вот веб-метод, где я получаю этот мыльный конверт
[WebMethod]
public String PutFile(String Name, String Email, String Picture, String Date)
{
String PictureByteString = Picture;
Image imgFromString = SaveByteArrayAsImage(PictureByteString);
DateTime.Now.ToShortDateString() + ".jpg"));
string serverpath = Server.MapPath("~/" + Email + "-" + DateTime.Now.ToShortDateString());
imgFromString.Save(serverpath, System.Drawing.Imaging.ImageFormat.Jpeg);
String Path = serverpath + ".Jpeg";
return Name;
}
private Image SaveByteArrayAsImage(string base64String)
{
byte[] bytes = Convert.FromBase64String(base64String);
image;
using (MemoryStream ms = new MemoryStream(bytes))
{
image = Image.FromStream(ms);
}
return image;
}
когда я отправляю данные в веб-сервис, Android LogCat показывает мне
java.io.IOException: HTTP request failed, HTTP status: 500
я так думаю, что означает, что данные, которые я отправляю в веб-службу, имеют неправильный тип, поэтому я попытался сделать String Picture
до byte[] Picture
в веб-методе, но результат был таким же. Я не могу понять, где я ошибаюсь...
Обновление: теперь отправка изображения в строке Base64 и исключение Java исчезли, но веб-метод по-прежнему не преобразует эту строку Base64 в изображение...