android - prices - hosting amazon
Carga de archivos(archivos de video) al servidor S3 desde Android usando URL firmadas generadas desde la aplicaciĆ³n del servidor (1)
Hecho esto usando la biblioteca de cliente HTTP Retrofit , cargó con éxito el archivo al servidor de Amazon s3.
código:
public interface UploadService {
String BASE_URL = "https://bucket.s3.amazonaws.com/folder";
/**
* @param url :signed s3 url string after ''BASE_URL''.
* @param file :file to upload,( usage: new TypedFile("mp4", videoFile);.
* @param cb :callback.
*/
@PUT("/{url}")
void uploadFile(@Path(value = "url", encode=false) String url, @Body() TypedFile file, Callback<String> cb);
}
clase de servicio
public final class ServiceGenerator {
private ServiceGenerator() {
}
public static <S> S createService(Class<S> serviceClass, String baseUrl) {
return createService(serviceClass, baseUrl, null, null);
}
public static <S> S createService(Class<S> serviceClass, String baseUrl, final String accessToken, final String tokenType) {
class MyErrorHandler implements ErrorHandler {
@Override public Throwable handleError(RetrofitError cause) {
return cause;
}
}
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.registerTypeAdapter(Date.class, new DateTypeAdapter())
.disableHtmlEscaping()
.create();
RestAdapter.Builder builder = new RestAdapter.Builder()
.setEndpoint(baseUrl)
.setClient(new OkClient(new OkHttpClient()))
.setErrorHandler(new MyErrorHandler())
.setLogLevel(RestAdapter.LogLevel.FULL)
.setConverter(new GsonConverter(gson));
if (accessToken != null) {
builder.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestFacade request) {
request.addHeader("Accept", "application/json;versions=1");
request.addHeader("Authorization", tokenType +
" " + accessToken);
}
});
}
RestAdapter adapter = builder.build();
return adapter.create(serviceClass);
}
y use:
UploadService uploadService = ServiceGenerator.createService(UploadService.class,UploadService.BASE_URL);
uploadService.uploadFile(remUrl,typedFile,new CallbackInstance());
Intento subir archivos de video a un Bucket en el servidor S3 desde la aplicación de Android usando una URL firmada que se genera desde la aplicación del lado del servidor (codificada en Python). Estamos haciendo una solicitud PUT a la URL firmada, pero estamos recibiendo
connection reset by peer exception
Pero cuando intento la misma URL en el CLIENTE REST POSTMAN, obtengo un mensaje de éxito. Cualquier ayuda será apreciada.