Android,Retrofit 2 POST请求

时间:2017-01-15 13:20:19

标签: android post

我是Android开发的新手,我不知道如何做到这一点,我已经在互联网上搜索过了,但到目前为止我所做的一切并不是没有工作。我尝试做的是将字符串发送到服务器,密钥必须是" interval ="。这是我到目前为止所做的,但它不起作用。我从spinner得到了字符串time2,但是现在它并不重要,因为我知道spinner部分有效,而POST没有。

 PostInterface service = retrofit.create(PostInterface.class);
    service.postTime(time2);

和界面

@FormUrlEncoded
@POST
Call<Response> postTime(@Field("interval=") String time);

我应该做什么网以及如何使用http://requestb.in/进行测试(之前从未使用过,我刚看到它可以用于POST测试)?

2 个答案:

答案 0 :(得分:1)

为什么你首先使用改装? 这是一个很好的图书馆,但如果您是Android的新手,我建议先从HttpClient开始。

在您的示例中,未调用execute方法。

Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://requestb.in/")
.addConverterFactory(GsonConverterFactory.create())
.build();
PostInterface service = retrofit.create(PostInterface.class);
Call<Response> call = service.postTime(time2);
call.execute()

在你的界面中(用requestbin给出的令牌替换xxx)

@FormUrlEncoded
@POST("xxxxxxx")
Call<Response> postTime(@Field("interval=") String time);

ps:请注意,不应在主线程上启动任何http调用。

答案 1 :(得分:0)

如果您要发布表单字段,则应从“interval =”中删除“=” 字段是键和值,不需要“=” 如果您想要一个测试客户端用于帖子,那么您可以尝试postman

如果这不是您所期望的答案,请更多地澄清您的问题

@Mickael Monsang答案 不要'直接使用call.execute更好地使用

call.enqueue(new Callback<String>() {
        @Override
        public void onResponse(Call<Response> call, Response<Response> response) {}}
        @Override
        public void onFailure(Call<String> call, Throwable t) {

            }
        }
    });