使用Post

时间:2019-07-18 10:35:45

标签: android android-studio

每个人都需要一个测试Web服务,可以在其中使用Retrofit post命令发布,删除补丁数据。我收到错误消息“无法为接口retrofit2.http.POST调用任何args构造函数。这种类型的儿子可能会解决此问题。

我认为这可能是我上传数据的链接不起作用

//My post command in mainActivity.java

 private void getpost(){
        Post post = new Post(23,"Hello","new text");
        Call<POST> call = jsonPlaceHolder.createpost(post);
        call.enqueue(new Callback<POST>() {
            @Override
            public void onResponse(Call<POST> call, Response<POST> response) {

                if (!response.isSuccessful()){
                    textView.setText("code: " + response.code());
                    return;
                }
                Post postresponse = (Post) response.body();

                String content = " ";
                content += "Code: " + response.code() + "\n";
                content += "Id:  " + postresponse.getId() + "\n\n";
                content += "User ID :" + postresponse.getUserid() + "\n\n";
                content += "Title :  " + postresponse.getTitle() + "\n\n";
                content += "Text :  " + postresponse.getBody() + "\n\n";
                textView.append(content);
            }

            @Override
            public void onFailure(Call<POST> call, Throwable t) {

                textView.setText(t.getMessage());
            }
        });
    }

Api编码

package com.example.learnretrofit;

import java.util.List;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;

public interface Jsonapi {
  @POST("posts")
    Call<POST> createpost(@Body Post post);

}

2 个答案:

答案 0 :(得分:0)

您在创建改造呼叫时传递了Post,但是在您的界面中,您期望Poster对象。 另外,如果您想要一些公共API, https://dog.ceo/dog-api/,您可以使用此

答案 1 :(得分:0)

这是您可以免费使用的一项服务。

http://dummy.restapiexample.com/

对于您的错误,您在创建 Call <> 对象时刚刚使用了改造类中的 POST ,而不是您的 Post 模型,因此命名约定事项。

private void getpost(){
    Post post = new Post(23,"Hello","new text");
    Call<Post> call = jsonPlaceHolder.createpost(post);
    call.enqueue(new Callback<Post>() {
        @Override
        public void onResponse(Call<Post> call, Response<Post> response) {

            if (!response.isSuccessful()){
                textView.setText("code: " + response.code());
                return;
            }
            Post postresponse = (Post) response.body();

            String content = " ";
            content += "Code: " + response.code() + "\n";
            content += "Id:  " + postresponse.getId() + "\n\n";
            content += "User ID :" + postresponse.getUserid() + "\n\n";
            content += "Title :  " + postresponse.getTitle() + "\n\n";
            Content += "Text:  " + post response. getBody () + "\n\n";
            textView.append(content);
        }

        @Override
        public void onFailure(Call<Post> call, Throwable t) {

            textView.setText(t.getMessage());
        }
    });
}

编辑:您还需要在此处进行更改。

public interface Jsonapi {
  @POST("posts")
    Call<Post> createpost(@Body Post post);

}

实际上,有两种模型,一种涉及发送正文请求,另一种涉及接收响应。因此,在您的情况下,请相应地更改两个模型(即Post)。如果您的响应和请求相同,那么它将起作用,否则将再次引发错误。创建另一个用于接收基于json结构的响应的模型。