使用任何类型的请求添加URL参数或实体

时间:2014-11-04 09:11:43

标签: android-volley

添加网址参数似乎有点麻烦,而且似乎无法为任何类型的请求添加正文。

有时,我需要在DELETE,GET,PUT请求中添加一个正文(就像在POST请求中一样)。尽管我非常喜欢Volley,但我觉得它并不像许多人想的那样松散。为了坚持这一点,该公司不得不改变我们的后端编写方式。

是否有一种简单的方法可以将体添加到任何类型的方法中。可以理解,但如果不是,也会感到沮丧。

此外,是否有一种简单的方法可以从HashMap或JSONObject中添加URL Params?

最近,我发现自己这样做了:

StringBuilder buildUrl = new StringBuilder(BASE_URL);
buildUrl.append("items")
        .append("/")
        .append(item.getId())
        .append("/")
        .append("edit.json")
        .append("?")
        .append("user_id=")
        .append(params.optString("user_id"))
        .append("&")
        .append("auth_token")
        .append(params.optString("auth_token"));

然后使用该String作为URL。 Volley有更简单的方法吗?如果没有,我只是为它做一个自己的功能。

1 个答案:

答案 0 :(得分:0)

您当然可以在JSONObject请求中添加正文。

根据docs

  

JsonObjectRequest - 在给定URL处检索JSONObject响应主体的请求,允许将可选的JSONObject作为请求主体的一部分传入。

我只用POST尝试过,所以不能评论其他HTTP方法 - 让我知道你发现了什么。我是这样做的:

JSONObject listItemData = new JSONObject();

    try {
        // Do what you're gonna do
    } catch (JSONException e) {
      e.printStackTrace();
    }

然后将其传递给您的请求:

JsonObjectRequest createItemRequest = new JsonObjectRequest(Request.Method.POST, CreateItemUrl, listItemData,
                new Response.Listener....
  //.....
)