Я пытаюсь отправить изображение с моими данными на мой сервер с android. Для этого я основал 64, закодировал мое изображение в строку и отправил его с помощью библиотеки андроидных залпов. Это вызывает проблемы. По какой-то причине он иногда отправляет сообщение дважды, и я не могу понять, почему. Ниже приведена функция, которая вызывается для отправки запроса на отправку. Я положил знак разрыва на String url = "http://domain.com/ajax_ws.php";
, а затем один на protected Map<String, String> getParams() {
. Я нашел String url = ...
только один раз, но когда он отправляет два, protected Map...
вызывается дважды. Я не могу найти документацию по андроидному залпу, поэтому я не знаю, почему это происходит. Растровое изображение изменяется, поэтому строка изображения находится где-то между 100 и 200 тыс. Символов. Я подумал, что это проблема размера, но мой сервер получает изображения и расшифровывает их, и все просто отлично.Android volley отправляет информацию дважды с загрузкой изображения
public void Sharing() {
pd = ProgressDialog.show(getParent(), null, "Please Wait...");
final String caption = mEtMessage.getText().toString();
RequestQueue queue = Volley.newRequestQueue(this);
String url = "http://domain.com/ajax_ws.php";
StringRequest postRequest = new StringRequest(
Request.Method.POST,
url,
new MyStringListener(),
new MyErrorListener()
) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("token", "secretToken");
params.put("mode", "createVoucher");
params.put("user_id", ActivityLogin.id);
params.put("deal_id", ActivitySharing.id_deal);
params.put("user_id_company", ActivityRestaurantDetails.res.getId());
params.put("user_img", pathImage);
params.put("caption", caption);
params.put("company_id", ActivityRestaurantDetails.res.getId());
return params;
}
};
queue.add(postRequest);
}
Любая идея, почему это может произойти?
Только предложение: Было бы хорошо, чтобы извлечь анонимный 'Response.Listener' отделить (внутренний?) Класс, чтобы упростить вещи и сделать код более читаемым. Это довольно захламлено прямо сейчас, и половина экрана покрыта отступом. –
@ Secator Спасибо, я сделаю это, этот код прошел через режущий инструмент, он повсюду. – tomjung
Я столкнулся с точной проблемой. Мое дальнейшее исследование показывает, что оно связано с любым медленным соединением. Я попытался отладить библиотеку Volley и нашел шаблон, который двойной поступок вызван SocketTimeoutException в классе BasicNetwork в методе «performRequest (Request > request)». Каждый раз, когда возникает исключение, происходит двойное сообщение. К сожалению, для этого я не получил никакого решения. Дайте мне знать вашу мысль. А также, я не вижу, что это связано с RetryPolicy. Любое число, которое вы положили на RetryPolicy, не повлияет на исправление этого. –