0

В настоящее время я использую библиотеку android-async-http, чтобы отправить сообщение/получить запросы. Раньше у меня не было никаких проблем, но теперь я понимаю, что он дает мне ошибку таймаута, если я отправляю этот запрос без данных изображения. (Нет ошибки, если я отправляю точный запрос, помещая данные изображения также.)Ошибка регистрации сообщения Android-Async-Http?

RequestParams params = new RequestParams(); 
params.add("mail", mail.getText().toString()); 
params.add("password", pass.getText().toString()); 

try { 
if (!TextUtils.isEmpty(imagePath)) 
    params.put("image", new File(imagePath)); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 

AsyncHttpClient client = new AsyncHttpClient(); 
client.setTimeout(60000); 
client.post("some_url", params, myResponseHandler); 

В чем причина этого? Спасибо заранее.

+0

могло бы быть просто, что ваш сервер не отвечает? – njzk2

+0

Но только после этого поста я помещаю изображение, и вдруг сервер начинает отвечать? Ой, не думай так ... Должно быть что-то еще. – yahya

+0

может быть сбоем вашего сервера, потому что поле изображения пуст – njzk2

ответ

1

После сравнения запросов и ответов я узнал, что корпус был типом содержимого. С изображением это была публикация multipart, и без нее что-то еще.

Итак, я попал в класс RequestParams в библиотеке и внес эти изменения. Теперь он отлично работает. Для дальнейших проблем я публикую изменения, которые я сделал.

Я поставил флаг, чтобы определить этот запрос должен размещать в многочастном или нет:

private boolean shouldUseMultiPart = false; 

Я создал конструктор для установки этого параметра:

public RequestParams(boolean shouldUseMultiPart) { 
    this.shouldUseMultiPart = shouldUseMultiPart; 
    init(); 
} 

А потом на GetEntity() метод я применил эти строки:

/** 
* Returns an HttpEntity containing all request parameters 
*/ 
public HttpEntity getEntity() { 
    HttpEntity entity = null; 

    if (!fileParams.isEmpty()) { 
     ... 
    } else { 
     if (shouldUseMultiPart) { 
      SimpleMultipartEntity multipartEntity = new SimpleMultipartEntity(); 

      // Add string params 
      for (ConcurrentHashMap.Entry<String, String> entry : urlParams 
        .entrySet()) { 
       multipartEntity.addPart(entry.getKey(), entry.getValue()); 
      } 

      // Add dupe params 
      for (ConcurrentHashMap.Entry<String, ArrayList<String>> entry : urlParamsWithArray 
        .entrySet()) { 
       ArrayList<String> values = entry.getValue(); 
       for (String value : values) { 
        multipartEntity.addPart(entry.getKey(), value); 
       } 
      } 

      entity = multipartEntity; 
     } else { 
      try { 
       entity = new UrlEncodedFormEntity(getParamsList(), ENCODING); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

    return entity; 
} 
+0

Как вы обрабатываете свой файл на стороне сервера? Я пытаюсь реализовать ту же функциональность, но я не могу поймать мой файл изображения на сервере (asp.net) - я вижу все параметры запроса, кроме файла ... – Laserson

+0

Я не писал серверную сторону, t помочь с этим жаль ... – yahya

+0

проблема решена, спасибо. – Laserson