也许这是一个愚蠢的问题,但我已经坚持了一段时间。我正在为restApi实现一些方法。我正在使用改造,我正在尝试更新客户信息。要做更新我正在使用PUT方法,但我不知道为什么我总是得到一个301代码,我无法更新信息。这是我的代码,谢谢你的一切。
public interface ClientInterface {
@GET("/clients/{clientParam}")
public Client fetchClient(@Path("clientParam") String client);
@GET("/clients/")
public void fetchAllClients(Callback<List<Client>> callback);
@POST("/clients/")
public void newClient(@Body Client client, Callback<Client> callback);
@PUT("/clients/{clientParam}/")
public void updateClient(@Path("clientParam") String cod, @Body Client client,Callback<Client> callback);
}
之后我按以下方式使用更新方法
RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(Utils.getURLPreferences(DatosClienteActivity.this)).build();
ClientInterface clientRestInter = restAdapter.create(ClientInterface.class);
Client clientsUpdate = new Client();
//Fetch data into clientsUpdate object
clientRestInter.updateClient(codClient, clientsUpdate, new Callback<Client>() {
@Override
public void success(Client client, retrofit.client.Response response) {
}
@Override
public void failure(RetrofitError error) {
error.printStackTrace();
}
});
编辑: 如果我对同一个网址使用排球,那就完美了...
RequestQueue queue = Volley.newRequestQueue(this);
final JSONObject jsonObject = new JSONObject();
try {
//Construct jsonObject
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest req = new JsonObjectRequest(Request.Method.PUT, URL, jsonObject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
VolleyLog.v("Response:%n %s", response.toString(4));
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
error.printStackTrace();
}
});
queue.add(req);
答案 0 :(得分:0)
最后我解决了它。
问题在于我们有两个不同的客户端对象,您获取的对象是您必须更改并使用它来上传PUT的对象。
我希望这有助于某人。