您好我有简单的Json在服务器上发布如下
{
"Key":"KEY",
"Token":"",
"Data":
{
"Country": "India",
"CountryCode":"IN",
"MobileNumber":"+91111111111"
}
}
如何将此数据发布到服务器请帮帮我 我创建了接口,我写了
@POST("/user/register/")
Call<Login> Registration(@Body Login login, Callback<Login> callBack);
这样可以吗?我怎么称呼这个?
我已经像
一样使用它了Login login = new Login();
com.j2ml.casualtrack.pojo_Request.Data data = new com.j2ml.casualtrack.pojo_Request.Data();
data.setMobileNumber("+911234567890");
data.setCountry("India");
data.setCountryCode("IN");
login.setData(data);
login.setToken("MY TOKEN KEY");
login.setKey("");
final ProgressDialog loading = ProgressDialog.show(this, "Registration in progress..", "Please wait...", false, false);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Urls.URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
service = retrofit.create(RestAPI.class);
service.Registration(login, new Callback<Login>() {
@Override
public void onResponse(Response<Login> response, Retrofit retrofit) {
System.out.println("Response: " + response.isSuccess());
loading.dismiss();
}
@Override
public void onFailure(Throwable t) {
System.out.println("ERROR ..."+t.getMessage());
}
});
但是,我收到此错误
java.lang.IllegalArgumentException: No Retrofit annotation found. (parameter #2)
答案 0 :(得分:0)
使用此代码..... 改装
@POST("/user/register/")
Call<YourClass> createUser(@Body YourClass data);
而非YourClass
将您的POJO class
放入包含所有数据....
并调用retrofit将数据POST到服务器。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://XXXXXXXXX.com")
.addConverterFactory(GsonConverterFactory.create())
.build();
YourClass you=new YourClass();
you.Key="new Key";//put all data like that in this class.
RegisterAPI api = retrofit.create(RegisterAPI.class);
Call<YourClass> call=api.createUser(you);
call.enqueue(new Callback<YourClass>() {});
随意询问是否有任何错误....
删除此行....
com.j2ml.casualtrack.pojo_Request.Data Data = new com.j2ml.casualtrack.pojo_Request.Data();
并尝试这个
data.setMobileNumber("+911234567890");
data.setCountry("India");
data.setCountryCode("IN");
而不是上面使用这个......
login.Data.setMobileNumber("+911234567890");
login.Data.setCountry("India");
login.Data.setCountryCode("IN");
享受编码.....
答案 1 :(得分:0)
如果你想发送一个对象(假设你的对象的格式类似于Test类。这里的数据是另一个对象的列表,其中包含属性[country,country code,mobilenumber])。
class Test {
@SerializedName("key")
int key;
@SerializedName("token")
string token;
@SerializedName("data")
ArrayList<Data> data; }
如果您将此对象发布到服务器,它将按照您要求的方式获取所需的json。
{
"Key":"",
"Token":"",
"Data":
{
"Country": "",
"CountryCode":"",
"MobileNumber":""
}
}
在这种情况下你可以使用@Body。 在服务中你可以找到类似的东西,
@POST(URL)
public Call<Test> postTest(@Body Test instanceOfTest);
希望这会对你有所帮助。