Я создаю приложение Flask для обработки изображений, загруженных с мобильного устройства, перед отправкой результатов обратно в мобильное приложение. Я успешно развернул приложение Flask в Azure и могу подтвердить, что оно работает с определенными путями, /test < /code> для одного. Когда я запускаю приложение Flask Locally на своем собственном компьютере и подключаюсь к нему, этот путь работает нормально, принимая загруженное изображение и возвращение ответа. Бэкэнд: < /p>
@app.route("/upload-data", methods=['POST'])
def store_data():
#Image processing code etc...
< /code>
И вот как я делаю пост в приведенном выше пути в моем приложении Java Android с okhttp: < /p>
private void uploadData(String imagePath, String pointCloudPath) {
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.readTimeout(responseTimeOut, TimeUnit.SECONDS)
.build();
File imageFile = new File(imagePath);
//Create request body
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("image", imageFile.getName(),
RequestBody.create(imageFile, MediaType.parse("image/jpeg")))
.build();
//Create request itself
String url = "http://" + backendUrl;
Request request = new Request.Builder()
.url(url+"/upload-data")
.post(requestBody)
.build();
//Execute request in background
Log.d("OkHTTP Image Upload", "Creating image upload request to: " + request.url());
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
e.printStackTrace();
Log.e("OkHTTP Image Upload", "Failed: " + e.getMessage());
runOnUiThread(() -> textStatus.setText("Request Failed: " + e.getMessage()));
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) {
if (response.isSuccessful()) {
Log.d("OkHTTP Upload", "Success");
InputStream responseZipStream = response.body().byteStream();
runOnUiThread(() -> processAnalysisResponse(responseZipStream));
}
else {
Log.e("OkHTTP Image Upload", "Error: "+response.code());
runOnUiThread(() -> textStatus.setText("Request Error: "+response.code()));
}
}
});
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... e-works-fi