每个人都需要一个测试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);
}
答案 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结构的响应的模型。