我正在使用loopj async http library to make http requests
,但在进行了研究about android networking library
后,我发现 retrofit
比排球更好,紧固和最可靠的网络库在那里。
我计划将我的代码更改为适合使用retrofit
..
以前,我使用此方法制作HTTP requests
:
AsyncHttpClient AHC = new AsyncHttpClient();
RequestParams param = new RequestParams();
param.put("arg1", arg1);
param.put("arg2", arg2);
AHC.post("http://xxxxx.xxx.xxxx.xxxx", param,
new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String content) {
// TODO Auto-generated method stub
我得到的内容是json type.
我读到改装默认使用gson ..我认为这真的更快。
以前我曾经以这种方式填充我的内部数据库:
JSONArray jArray = new JSONArray(content);
for (int i = 0; i < jArray.length(); i++) {
JSONObject json = jArray.getJSONObject(i);
TD.CreatePostsTable(
json.getString("id")}
这些方法将如何改进?
非常感谢你们!
答案 0 :(得分:3)
你的帖子方法:
@POST("/users/login")
YOUR_RETURN_TYPE loginUser(@Field("arg1") String arg1,
@Field("arg2") String arg1);
Retrofit配置:
new RestAdapter.Builder()
.setEndpoint("http://your_url")
.setLogLevel(RestAdapter.LogLevel.FULL).build();
我建议使用这种方法与Retrofit一起使用,使用Singleton:
private Map<String, Object> restInstances = new HashMap<String, Object>();
public <T> T getRescClient(Class<T> clazz) {
T client = null;
if ((client = (T) restInstances.get(clazz.getCanonicalName())) != null) {
return client;
}
client = restAdapter.create(clazz);
restInstances.put(clazz.getCanonicalName(), client);
return client;
}
然后打电话给:
restApiProvider.getRestClient(UserService.class).your_method()
希望它有所帮助!
答案 1 :(得分:0)
请看这个实现:https://github.com/UweTrottmann/tmdb-java
Tmdb类构建不同的服务。例如,MovieServices有:
@GET("/movie/{id}")
Movie summary(
@Path("id") int tmdbId
);
此方法将调用/ movie / {id}方法返回给返回JSON的REST服务器。该方法将返回一个Movie对象,其中的属性与JSON键同名。
public class Movie extends MediaBase implements TraktEntity {
private static final long serialVersionUID = -1543214252495012419L;
@SerializedName("tmdb_id") public int tmdbId;
public Integer plays;
@SerializedName("in_collection") public Boolean inCollection;
public Date released;
public String trailer;
public Integer runtime;
public String tagline;
public String overview;
public String certification;
public Boolean watched;
}