改造类PUT错误代码301

时间:2015-06-17 11:05:55

标签: android rest retrofit put

也许这是一个愚蠢的问题,但我已经坚持了一段时间。我正在为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);

1 个答案:

答案 0 :(得分:0)

最后我解决了它。

问题在于我们有两个不同的客户端对象,您获取的对象是您必须更改并使用它来上传PUT的对象。

我希望这有助于某人。