File Flitter中的WSDL文件上载?
我是个新手。我正在寻找一些关于如何正确使用颤振的HHTP库的指导 我的挑战是使用WSDL服务来上传图片。这里有两个代码(flatter和Java),它们使用相同的WSDL执行相同的功能。Java工作 我使用以下示例构建了我的颤振代码:如何在颤振中上传图像 但我下面的颤振代码返回服务器错误500:请参阅下面的屏幕截图以获取参考和清晰性File Flitter中的WSDL文件上载?,file,http,flutter,upload,httpurlconnection,File,Http,Flutter,Upload,Httpurlconnection,我是个新手。我正在寻找一些关于如何正确使用颤振的HHTP库的指导 我的挑战是使用WSDL服务来上传图片。这里有两个代码(flatter和Java),它们使用相同的WSDL执行相同的功能。Java工作 我使用以下示例构建了我的颤振代码:如何在颤振中上传图像 但我下面的颤振代码返回服务器错误500:请参阅下面的屏幕截图以获取参考和清晰性 Future<bool> sentPhotoTransaction () async { // URL includes two parameter
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;
}
}
如何使用上面的HTTP库获得上面的颤振代码?HHTP库是使用WSDL的正确库吗
感谢您的指导。呆在家里。注意安全 在Dart中,目前您正在使用一个多部分请求,而在Java中,您正在发送一个流。我建议也尝试发送一条流。尝试使用奇妙的库来完成它 其中有一个发送示例:
//二进制数据
列表postData=[…];
等待迪奥发帖(
网址,
数据:Stream.fromIterable(postData.map((e)=>[e]),//创建一个流
选项:选项(
标题:{
Headers.contentLengthHeader:postData.length,//设置内容长度
},
),
);
如果你需要更多的评论,请告诉我。希望它能起作用。此代码扩展了上面的洛伦佐答案。这个代码对我有用,希望能帮助别人
String photoPath = ""; // Your photo location path.
Io.File file = new Io.File(photoPath);
var dio = Dio();
// ***************** Transfer File *****************
try {
// Convert file to Bytes WITHOUT compression.
// List<int> postData = await file.readAsBytes();
// Convert file to Bytes WITH compression.
List<int> postData = await compressImageFileAndReturnList(file);
var response = await dio.post(urlString,
data: Stream.fromIterable(postData.map((e) => [e])),
options: Options(
followRedirects: false,
headers: {
Headers.contentLengthHeader: postData.length, // set content-length
}
)
);
if (response.statusCode == 200) {
print("Success");
return true;
} else {
print("POST request did not worked");
return false;
}
} catch(e) {
print(e.toString());
return false;
}
String photoPath=“”;//您的照片位置路径。
Io.File文件=新的Io.File(光路);
var-dio=dio();
//*******************传输文件*****************
试一试{
//无需压缩即可将文件转换为字节。
//List postData=wait file.readAsBytes();
//通过压缩将文件转换为字节。
List postData=等待压缩图像文件和返回列表(文件);
var response=wait dio.post(urlString,
数据:Stream.fromIterable(postData.map((e)=>[e]),
选项:选项(
followRedirects:false,
标题:{
Headers.contentLengthHeader:postData.length,//设置内容长度
}
)
);
如果(response.statusCode==200){
打印(“成功”);
返回true;
}否则{
打印(“POST请求不起作用”);
返回false;
}
}捕获(e){
打印(如toString());
返回false;
}
我假设图片数据进入列表postData=[…]的定义;我是如何做到这一点的?我想是这样的:List fileBytes=await file.readAsBytes();您缺少将图像压缩到较低分辨率的代码。问题在于请求,而不是图像。嗨,Lorenzo,感谢您的帮助和快速回复。从概念上讲,你上面的答案是好的。但是就像Richard提到的,代码是不完整的。但我成功了。我将很快发布完整的代码示例。Do给了我研究DIO图书馆的想法。我还使用http.MultipartRequest库实现了它。我试图找出HTTP和DIO库哪一个最好、更快。
String photoPath = ""; // Your photo location path.
Io.File file = new Io.File(photoPath);
var dio = Dio();
// ***************** Transfer File *****************
try {
// Convert file to Bytes WITHOUT compression.
// List<int> postData = await file.readAsBytes();
// Convert file to Bytes WITH compression.
List<int> postData = await compressImageFileAndReturnList(file);
var response = await dio.post(urlString,
data: Stream.fromIterable(postData.map((e) => [e])),
options: Options(
followRedirects: false,
headers: {
Headers.contentLengthHeader: postData.length, // set content-length
}
)
);
if (response.statusCode == 200) {
print("Success");
return true;
} else {
print("POST request did not worked");
return false;
}
} catch(e) {
print(e.toString());
return false;
}