http post setEntity使用改造

时间:2016-01-22 05:32:22

标签: android http post retrofit

我最近转向Retrofit,我想用Retrofit替换这个httpost集实体。我怎么能这样做。

    JSONObject jsonObject = new JSONObject();
    jsonObject.put("childId", childId);

    HttpPost httpPost = new HttpPost(url);
    StringEntity entity = new StringEntity(jsonObject.toString());
    httpPost.setEntity(entity);

这就是我想要做的事情,但它起作用了,

    Observable<Item> getListOfFeed(@Body StringEntity params);

2 个答案:

答案 0 :(得分:1)

最后找出答案,添加一个自定义的TypedJsonString类,

public class TypedJsonString extends TypedString {
    public TypedJsonString(String body) {
        super(body);
    }

    @Override public String mimeType() {
        return "application/json";
    }
}

将我的json对象转换为TypedJsonString,

TypedJsonString typedJsonString = new TypedJsonString(jsonObject.toString());

更改了api类,如下所示,

Observable<Item> getListOfFeed(@Body TypedJsonString typedJsonString);

答案 1 :(得分:0)

您可以使用{API}界面中Post中的以下代码,使用Retrofit发送请求

public interface MyAPI{
 @FormUrlEncoded
 @POST("rest url")
 Call<Item> loadQuestions(@Field("parameter_name")String order);
}

别忘了提及@FormUrlEncoded,要调用此函数,请使用此

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("url")
            .addConverterFactory(GsonConverterFactory.create())
            .build();
MyAPI api=retrofit.create(MyAPI.class);
Call<Item> call=api.loadQuestions("pass your data here");
call.enqueue(new Callback<Item>() {
        @Override
        public void onResponse(Response<Item> response, Retrofit retrofit) {
            Log.e("response",response.message());

        }

        @Override
        public void onFailure(Throwable t) {

        }
});