http://www.superbinstruments.com/directory/index.php?r=webservice/profile/id/4096
这里我想在Body中传递ID(如上所述)和JsonObject(可以为null)。
这里的概念就像当我将null传递给json对象时,它将检索配置文件数据,或者如果我传递带有配置文件信息的json对象,那么它将更新配置文件数据。
我尝试过以下方法,但我可以检索数据,但我无法更新数据。 为了更新数据,我们可以传递与Body相同的JSON响应。
@POST("index.php")
Call<UserProfile> profileUser(@Query("r") String value, @Body String user);
@POST("index.php?")
Call<UserProfile> saveUser(@Query("r") String value, @Body JSONObject user);
我正在路过: value = webservice / profile / id / 4096
如果我以Json String作为个人资料更新信息传递,那么我得到了
“不需要无效的请求密码。”
要么
如果我将作为JsonObject传递为配置文件更新信息
然后我得到了
java.lang.OutOfMemoryError:尝试抛出OutOfMemoryError时抛出OutOfMemoryError;没有可用的堆栈跟踪
答案 0 :(得分:0)
您发布的链接不需要任何正文发布。从代码中删除Body
。要使用@Field
,您必须将方法注释为@FormUrlEncoded
你的方法应该是这样的。
@FormUrlEncoded
@POST("index.php?r=webservice/profile/id/")
Call<UserProfile> saveUser(@Field("value") String value);
希望有所帮助:)
答案 1 :(得分:0)
请尝试这种方式
@POST("index.php")
Call<User> getInstruments(@Query("r") String webservice, @Body User user);
你应该使用你的模型类传递JSON Bhuvanesh 建议
JSONObject jObj = null;
try {
jObj = new JSONObject();
jObj.put("firstname", "Kunjan Shah");
} catch (JSONException ex) {
ex.printStackTrace();
}
User user = new User();
user.setData(jObj);
这是你的模特课
public class User {
public String getSuccess() {
return success;
}
public void setSuccess(String success) {
this.success = success;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public JSONObject getData() {
return data;
}
public void setData(JSONObject data) {
this.data = data;
}
String success;
String message;
JSONObject data;
}
通过传递这两个参数来调用您的服务
调用update_user_profile = yourapiinterfaceobject.getInstruments(“webservice / profile / id / 4096”,user);