retrofit 使用 SimpleXmlConverterFactory 解析 xml 格式数据
支持格式:
Gson com.squareup.retrofit2:converter-gson:2.0.2 Jackson com.squareup.retrofit2:converter-jackson:2.0.2 Moshi com.squareup.retrofit2:converter-moshi:2.0.2 Protobuf com.squareup.retrofit2:converter-protobuf:2.0.2 Wire com.squareup.retrofit2:converter-wire:2.0.2 Simple XML com.squareup.retrofit2:converter-simplexml:2.0.2 Scalars com.squareup.retrofit2:converter-scalars:2.0.2
1配置:
compile 'com.squareup.retrofit2:retrofit:2.0.1' compile 'com.squareup.okhttp3:logging-interceptor:3.1.2' compile ('com.squareup.retrofit2:converter-simplexml:2.0.1'){ exclude group:'xpp3',module: 'xpp3' exclude group:'stax',module: 'stax-api' exclude group:'stax',module: 'stax' }
2:根据对应的xml配置实体类 参考:http://blog.csdn.net/qqyanjiang/article/details/51200108
3:
//配置打印日志
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(httpLoggingInterceptor)
.build();
// String baseUrl = "https://api.douban.com/v2/movie/";
String baseUrl = "you url!!!";
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.client(okHttpClient)
.addConverterFactory(SimpleXmlConverterFactory.create())
// .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
MovieService movieService = retrofit.create(MovieService.class);
// Call<ResponseBody> call = movieService.login(0, 10);
Call<LoginInfo> call = movieService.login("admin", "123456", "0");
call.enqueue(new Callback<LoginInfo>() {
@Override
public void onResponse(Call<LoginInfo> call, Response<LoginInfo> response) {
System.out.println(response.body().Table.USERNAME);
}
@Override
public void onFailure(Call<LoginInfo> call, Throwable t) {
t.printStackTrace();
}
});
4:创建类文件
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface MovieService {
@POST("Login")//这个是基于soap的post
@FormUrlEncoded
Call<LoginInfo> login(@Field("sLoginID") String start, @Field("sPassWord") String count, @Field("AppID") String AppID);
//豆瓣电影
@GET("top250")
Call<ResponseBody> getMovie(@Query("start") int start, @Query("count") int count);
}
@Root(name = "NewDataSet", strict = false)
public class LoginInfo {
@Element(name = "Table")
public Table Table;
}
@Root(name = "Table", strict = false)
public class Table {
@Element(name = "ID")
public String ID;
@Element(name = "ROLE")
public String ROLE;
@Element(name = "USERNAME")
public String USERNAME;
}
xml格式如下: