Я пытаюсь написать код для отправки jpg-изображений на сервер, который может получать запросы JSON. Эти изображения хранятся на устройстве. Я в основном портирую код Python, который использует Requests: HTTP for Humans для связи с сервером. До сих пор мне удалось установить связь с кодом, который я наклеил ниже. Поэтому я вижу некоторую надежду.Отправить jpg изображения на сервер (json)
// JAVA code on Android
String URL = BASE_URL + "/relative_url";
JsonObjectRequest postRequest = new JsonObjectRequest(Request.Method.POST, URL, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i(TAG, "Successful POST request");
try {
sceneid = response.getInt("id");
Log.i(TAG, "Scene id: " + sceneid);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i(TAG, "Bad POST request");
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
String credentials = "myuser:mypass";
String auth = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
headers.put("Authorization", auth);
return headers;
}
};
queue.add(postRequest);
Однако, я не могу реплицировать код Python ниже. Я уже тщательно проверил решение в Интернете, но мне не удалось заставить его работать. Решения, которые я нашел, либо используют устаревшие библиотеки, либо код не работает. Команда в python, которую я пытаюсь реплицировать:
# Python code to replicate in JAVA
auth = {'myuser', 'mypass'}
file = {'jpgdata': open('myimg.jpg','rb')}
req = requests.post(BASE_URL + '/relative_url', params={'param', param}, files=file, auth=auth)
Некоторая помощь будет действительно оценена.
Заранее спасибо.
Я попытался реализовать эту часть. Сначала я конвертирую изображение в растровое изображение «bitmap = BitmapFactory.decodeFile (imgPath)»; и затем я применяю вашу функцию «String image = BitMapToString (bitmap);». Затем в параметрах я добавляю его следующим образом: «params.put (« jpgdata », изображение); Однако у меня есть ошибка 400. – Poiex