adaptar el contenido de las notas

 

El problema?

6.retrofit principio: el modo de proxy dinámico
uso básico de 5.retrofit?
4. El uso de proyectos de modernización (procesos básicos y registros de carga de archivos e imágenes)? Especial: archivo (y fotos) para cargar
el significado y el papel de 3.Retrofit diversas anotaciones?
Métodos 2.android solicitud de adaptación formato de parámetro RequestBody del
modelo 1.retrofit?

 

====  

5.retrofit uso básico:


MovieService interfaz pública {
@GET ( "Top250")
Llamar <MovieEntity> getTopMovie (@Query ( "Inicio") int empezar, @ Query ( "Count") int cuenta);
}
然后你还需要创建一个reequipamiento对象:
public static final de cadena baseUrl = "https://api.douban.com/v2/movie/";
Retrofit de reequipamiento = new Retrofit.Builder ()
.baseUrl (baseUrl)
.addConverterFactory (GsonConverterFactory.create ())
.build ();

El objeto es entonces para crear objetos de un MovieService mejoramiento:
MovieService movieService = retrofit.create (MovieService.class);
Call <MovieEntity> Call movieService.getTopMovie = (0,10);
//call.enqueue () de petición asincrónico, call.execute () solicitud de sincronización
call.enqueue (la devolución de llamada nueva nueva <MovieEntity> () {
@Override
public void onResponse (Call <MovieEntity> llamada, la respuesta <MovieEntity> Respuesta) {
result_TV.setText (response.body toString () ()) .;
}
@Override
public void del onFailure (Call <MovieEntity> llamada, el Throwable T) {
result_TV.setText (t.getMessage ());
}
});
aquí también puede eliminar una solicitud:
la versión 1.x de reequipamiento no se cancela directamente razones metodológicas tarea permanente en la versión 2.x, el modo de servicio se convierte en la forma de la llamada es para hacer transacciones en curso se pueden cancelar.
Para ello, basta con llamar call.cancel ().
Estos son los Retrofit2.0 uso básico de la siguiente charla detallada acerca de su uso:


el uso de adaptación 4. Proyecto (el proceso de carga y archivo de registros básicos e imágenes)?

4.1项目中的使用流程retrofit:
interfaz pública CommonApi {
@POST ( "común / getTime.htm")
observable <BaseJson <largo >> getNetTime (@Body RequestBody requestBody);
}

Public class UsualConfigModel extiende implementos BaseModel UsualConfigContract.Model {
@ Override
pública observable <BaseJson <largo >> getNetTime (Map <String, Object> Hashmap) {
observable <BaseJson <largo >> observable = mRepositoryManager.obtainRetrofitService (CommonApi.class)
. getNetTime (ToRequestBodyUtil.toRequestBody (Hashmap));
volver observables;
}
}

public static RequestBody toRequestBody (Map <String, Object> Mapa) {
entrada String = buildParams (mapa);
entrada = replaceURL (entrada);
// RequestBody requestBody = RequestBody.create (MediaType.parse ( "application / json, text / plain; charset = UTF-8"), de entrada);
RequestBody requestBody = RequestBody.create ( "-urlencoded x-www-form / aplicación; charset = UTF-8" MediaType.parse (), de entrada);
volver requestBody;
}

public static RequestBody buildParamV2 (Map <String, String> paramsMap, IsFilter booleano) {
FormBody.Builder constructor = new FormBody.Builder ();
para (String key: paramsMap.keySet ()) {
Valor de cadena = paramsMap.get (clave);
builder.add (clave, valor); //追加表单信息
}
RequestBody formBody = builder.build ();
// Solicitud de petición = new Request.Builder () url (netUrl) .post (formBody) .build (.);
volver formBody;
}

4.2 archivos de proyecto (retrofit) y fotos subidos mediante el proceso:
clase VisitApi:
/ **
* @des: Detalles de la conferencia - nuevos archivos: archivos, subir fotos, etc .: ( "", param, archivos ) .then (());
// esta manera:
* /
@POST ( "Record / Reunión / saveRecordMeetingInfo.htm")
observable <MeetDetail> newAddMeetDetail (@Body cuerpo requestBody);

@Multipart
@POST ( "Record / Reunión / saveRecordMeetingInfo .htm ")
observable <BaseCode> newAddMeetDetailV1 (@QueryMap el Mapa <String, Object> mapas de usuario, lista @Part <MultipartBody.Part> FileMap,
Lista @Part <MultipartBody.Part> PhotoMap, Lista @Part <MultipartBody.Part> signMap) ;

@Multipart
@POST ( "registro / reunión / saveRecordMeetingInfo.htm")
observables <BaseCode> newAddMeetDetailV2 (@QueryMap mapa <String, Object> mapas de usuario, @PartMap Map <String, RequestBody> FileMap,
@PartMap Map <String, RequestBody> PhotoMap , @PartMap Map <String, RequestBody> signMap);

/ **
* @des:会议修改的接口
* /
@ Override
pública observable <MeetDetail> changedMeetDetail (Map <String, Object> Hashmap, List <String> Rutas de archivos, List <String> photoPaths, List <String> signPaths) {
MultipartBody .Builder build = nuevo MultipartBody.Builder ();
para (Map.Entry <String, Object> entrada: hashMap.entrySet ()) {
cadena de clave = entry.getKey ();
Valor objeto = entry.getValue ();
build.addFormDataPart (clave, String.valueOf (valor)); //
}
if (! = null && rutas de los archivos filePaths.size ()> 0) {
for (int i = 0; i <filePaths.size (); i ++) {
archivo = new File (filePaths.get (i));
RequestBody fileRQ = RequestBody.create (MediaType.parse ( "multipart / form-data"), archivo);
build.addFormDataPart ( "archivos", file.getName (), fileRQ); //
}
}
if (! = null && photoPaths photoPaths.size ()> 0) {
for (int i = 0; i <photoPaths.size ( ); i ++) {
archivo del archivo = new File (photoPaths.get (i));
RequestBody fileRQ = RequestBody.create (MediaType.parse ( "image / *"), archivo);
build.addFormDataPart ( "fotos", file.getName (), fileRQ);


MultipartBody cuerpo = build.build (); // MultipartBody继承RequestBody
observable <MeetDetail> observable = mRepositoryManager.obtainRetrofitService (VisitApi.class)
.changedMeetDetail (cuerpo);
volver observables;
}

//不适合的方法:
públicos observables <BaseCode> changedMeetDetail2 (mapa <String, Object> Hashmap, List <String> Rutas de archivos, List <String> photoPaths, List <String> signPaths) {
List <MultipartBody.Part> piezas1 = new ArrayList <> ();
if (! = null && rutas de los archivos filePaths.size ()> 0) {
for (int i = 0; i <filePaths.size (); i ++) {
archivo del archivo = new File (filePaths.get (i));
RequestBody fileRQ = RequestBody.create (MediaType.parse ( "multipart / form-data"), archivo);
MultipartBody.Part parte MultipartBody.Part.createFormData = ( "archivos", file.getName (), fileRQ);
parts1.add (parte);
}
} Else {
MultipartBody.Part parte = MultipartBody.Part.createFormData ( "", "");

Lista <MultipartBody.Part> parts2 = new ArrayList <> ();
if (! = null && photoPaths photoPaths.size ()> 0) {
for (int i = 0; i <photoPaths.size (); i ++) {
archivo del archivo = new File (photoPaths.get (i));
RequestBody fileRQ = RequestBody.create (MediaType.parse ( "image / *"), archivo);
MultipartBody.Part parte MultipartBody.Part.createFormData = ( "fotos", file.getName (), fileRQ);
parts2.add (parte);
}
} Else {
MultipartBody.Part parte MultipartBody.Part.createFormData = ( "", ""); //直接传入两个空字符串就可以了...不能传nula;
parts2.add (parte);
}
Observable <BaseCode> observable = null;
// observable <BaseCode> observable = mRepositoryManager.obtainRetrofitService (VisitApi.
// .changedMeetDetail (Hashmap, piezas1, parts2, parts3);
volver observables;
}

Supongo que te gusta

Origin www.cnblogs.com/awkflf11/p/12541221.html
Recomendado
Clasificación