Я довольно новичок, чтобы трепетать. Я ищу несколько советов о том, как правильно использовать библиотеку HHTP flutter.
Моя задача - использовать WSDL-сервис для загрузки изображения. Вот два кода (флаттер против Java), которые выполняют одну и ту же функцию с одним и тем же WSDL. Java работает!
Я строю свой код флаттера, используя этот пример: Как загрузить изображение во флаттер. Как загрузить изображение в Flutter?
Но мой код флаттера ниже возвращает ошибку сервера 500: См. Снимки экрана ниже для справки и ясности.
Future<bool> sentPhotoTransaction () async {
// URL includes two parameter plus the image file stream.
String cIPhotoPath = "/storage/emulated/0/Android/data/com.saleson24.saleson24/files/Pictures/scaled_IMG_20200414_161101.jpg";
String urlString = "http://pro.test.com/ImgHandler.WCFHost/FileManagerService.svc/UploadFile?MobID=20A47616&Sig=b6e61d4e3ee38";
Io.File imageFile;
imageFile = new Io.File(cIPhotoPath);
// ***************** create multipart request for POST *****************
var request = http.MultipartRequest("POST", Uri.parse(urlString));
// ***************** create multipart using filepath, string or bytes *****************
var picture = await http.MultipartFile.fromPath("stream", imageFile.path);
// ***************** add multipart for the picture to request *****************
request.files.add(picture);
try {
var response = await request.send();
if (response.statusCode == 200) {
print("Success");
return true;
} else {
print("POST request did not worked");
return false;
}
} catch(e) {
print(e.toString());
return false;
}
}
Вот пример кода Java, который работал с тем же WSDL:
java.net.URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoOutput(true); //Allow Outputs
urlConnection.setUseCaches(false); //Don't use a cached Copy
urlConnection.setRequestMethod("POST");
Bitmap full_image = BitmapFactory.decodeFile(filepath);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
full_image.compress(Bitmap.CompressFormat.JPEG, IMAGE_QUALITY, stream); // Convert stream.
byte[] byteArray = stream.toByteArray();
DataOutputStream dos = new DataOutputStream(urlConnection.getOutputStream());
dos.write(byteArray);
dos.flush();
dos.close(); // END POST
Как получить трепетать код выше, используя библиотеку HTTP выше, чтобы работать? Является ли библиотека HHTP правильной библиотекой для использования WSDL?
Ваше руководство приветствуется.
Stay @ home. Будь в безопасности!