改造更新 class PUT 错误代码 301
Retrofit updating class PUT error code 301
也许这是一个愚蠢的问题,但我已经坚持了一段时间。我正在为 restApi 实现一些方法。我正在使用改造,我正在尝试更新客户信息。要进行更新,我正在使用 PUT 方法,但我不知道为什么我总是收到 301 CODE,而且我无法更新信息。这是我的代码,谢谢你所做的一切。
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();
}
});
编辑:
如果我对同一个 URL 使用截击,它会完美地工作...
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);
终于解决了
问题是我们有两个不同的客户端对象,您获取的那个是您必须更改并使用它通过 PUT 上传的那个。
我希望这对某人有所帮助。
也许这是一个愚蠢的问题,但我已经坚持了一段时间。我正在为 restApi 实现一些方法。我正在使用改造,我正在尝试更新客户信息。要进行更新,我正在使用 PUT 方法,但我不知道为什么我总是收到 301 CODE,而且我无法更新信息。这是我的代码,谢谢你所做的一切。
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();
}
});
编辑: 如果我对同一个 URL 使用截击,它会完美地工作...
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);
终于解决了
问题是我们有两个不同的客户端对象,您获取的那个是您必须更改并使用它通过 PUT 上传的那个。
我希望这对某人有所帮助。