Android Volley - 使身体和网址参数POST - 同时getParams和getBody

问题描述:

我有简单的问题调用POST和哪种方法调用GET。Android Volley - 使身体和网址参数POST - 同时getParams和getBody

这是我的简单的类:

public class CustomStringRequest extends Request<CustomNetworkResponse> { 

private final Map<String, String> headers; 
private final Map<String, String> params; 
private final String body; 
private final Response.Listener<CustomNetworkResponse> listener; 


public CustomStringRequest(int method, 
          String url, 
          Map<String, String> headers, 
          Map<String, String> params, 
          String body, 
          Response.Listener<CustomNetworkResponse> listener, 
          Response.ErrorListener errorListener) { 

    super(method, url, errorListener); 
    this.headers = headers; 
    this.params = params; 
    this.body = body; 
    this.listener = listener; 
} 



@Override 
public Map<String, String> getHeaders() throws AuthFailureError { 
    return headers != null ? headers : super.getHeaders(); 
} 

@Override 
public Map<String, String> getParams() { 
    return params; 
} 

@Override 
public byte[] getBody() throws AuthFailureError { 
    return body != null ? body.getBytes() : null; 
} 

如何,我可以在同一时间使用getParams()方法和getBody()?有没有可能,因为当我检查超级实现时,我认为这是不可能的。

我也注释了方法getBody()来看看那是真的。

这是否意味着我不能发送身体和网址参数POST? URL参数是否意味着用于GET请求?这是标准吗?

+0

我觉得它们是一样的,因为getParams在默认getBody中调用了 – BNK

+0

@BNK,好像是。这对我来说很奇怪,没有创建UrlParametrs的方法(以及它的废弃......但我仍然认为它不能用作UrlParams)。或者我错过了一些东西,有一种方法呢? – 5er

+0

你的意思是GET请求的url中的参数? – BNK

那么我不知道你的意图是什么!您可以随时在url中添加url参数(如果参数很简单)。然后您可以使用getParams()getBody()来传递更复杂的参数。

我认为这两者之间的区别在于它们通过网络传输时的参数编码(尽管我对此并不是100%确定),但是。 getBody()更安全。