http://www.superbinstruments.com/directory/index.php?r=webservice/profile/id/4096
在这里,我希望在URL中传递ID (与上面一样),并在主体中传递JsonObject (可以是空的)。
这里的概念是这样的:当我向json对象传递null时,它将检索配置文件数据,或者如果我传递带有配置文件信息的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字符串作为配置文件更新信息进行传递,则会得到“不需要无效的请求密码”。
或者,如果我将作为配置文件更新信息的JsonObject传递,则在尝试抛出OutOfMemoryError时会抛出java.lang.OutOfMemoryError: OutOfMemoryError;没有可用的堆栈跟踪
发布于 2017-08-20 19:46:58
您发布的链接不需要任何正文才能发布。从代码中删除Body。要使用@Field,必须将方法注释为@FormUrlEncoded
你的方法应该是这样的。
@FormUrlEncoded
@POST("index.php?r=webservice/profile/id/")
Call<UserProfile> saveUser(@Field("value") String value);希望它能有所帮助:)
发布于 2017-08-21 15:35:24
请试一下这条路
@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;
}并通过传递这两个参数来调用您的服务
用户调用= yourapiinterfaceobject.getInstruments("webservice/profile/id/4096",用户);
update_user_profile
https://stackoverflow.com/questions/45781655
复制相似问题