дооснащение Android загрузки видео

Я использую Retrofit для загрузки изображений на свой сервер, загрузка работает нормально, но когда размер изображения немного велик, возникает исключение.

java.net.SocketException: sendto failed: EPIPE (Broken pipe)

Вот мой код

public interface RestClient {
@Multipart
@POST("/upload2.php")
Response uploadUserIds(@Part("photo") TypedFile photo);
 }

RestAdapter restAdapter = new RestAdapter.Builder()
        .setEndpoint(UploadFiles.SERVER_URL)
        .setLogLevel(RestAdapter.LogLevel.BASIC)
        .setLog(new RestAdapter.Log() {
            @Override
            public void log(String msg) {
                Log.i(TAG, msg);
            }
        })
        .build();

RestClient service = restAdapter.create(RestClient.class);

//Мой вызов

Response tr = service.uploadUserIds(new TypedFile(typeFile, f));

person user3401676    schedule 06.05.2014    source источник


Ответы (3)


Это не обязательно проблема на стороне клиента. Я сильно верю, что размер файла больше, чем максимальный размер загрузки, разрешенный сервером.

person JehandadK    schedule 16.05.2014

Я тоже столкнулся с этой проблемой. Я использовал Retrofit в Android-клиенте на эмуляторе и пытался загрузить (довольно маленькие) тестовые видеофайлы на свой серверный код, работающий в Eclipse на моем ПК с Windows. Я настроил Retrofit для полного ведения журнала, используя:

RestAdapter restAdapter = new RestAdapter.Builder()
        .setEndpoint("http://10.0.2.2:8080")
        .setLogLevel(LogLevel.FULL)
        .build();

Это постоянно вызывало указанную выше ошибку при попытке загрузить определенные файлы. Однако, когда я установил базовый уровень журнала с помощью setLogLevel(LogLevel.BASIC), все эти файлы начали загружаться нормально.

Поэтому я подозреваю, что это может быть какая-то внутренняя ошибка модернизации, возможно, связанная с переполнением буферов. Не думаю, что это проблема с сервером.

person Robbie Jackson    schedule 06.09.2014

Это может быть проблема на стороне сервера. Сценарий мог застрять где-то в коде, следовательно, если не отправить ответ, сервер закрыл бы сокет. Для этого может быть два решения:

  1. Решение проблем в скрипте на стороне сервера

Второй вариант нежелателен:

  1. Увеличение значений тайм-аута до большого числа на стороне клиента !!

Надеюсь это поможет

person lakshay    schedule 24.08.2015