就像我公司的一些高级开发人员说的那样,我以错误的方式发布数据。我想知道哪种方法最好。
基本上,我们在“身体参数”中发送数据,例如:-
// In Retrofit or Volley or AndroidFastNetworking
My way :- addBodyParameter("Key",value)
Senior Way :- addBodyParameter(jsonObject)
就像他和我争论的一样,即使我们有一个或多个键,我们也必须在jsonObject中发送参数。
有人可以建议我哪种方法最好吗?我忘了他是iOS开发人员的一件事。
答案 0 :(得分:1)
通过使用GsonRequest,您可以通过API发布数据。 Gson是一个使用反射将Java对象与JSON相互转换的库。
public class GsonRequest<T> extends Request<T> {
private final Gson gson = new Gson();
private final Class<T> clazz;
private final Map<String, String> headers;
private final Listener<T> listener;
/**
* Make a GET request and return a parsed object from JSON.
*
* @param url URL of the request to make
* @param clazz Relevant class object, for Gson's reflection
* @param headers Map of request headers
*/
public GsonRequest(String url, Class<T> clazz, Map<String, String> headers,
Listener<T> listener, ErrorListener errorListener) {
super(Method.GET, url, errorListener);
this.clazz = clazz;
this.headers = headers;
this.listener = listener;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return headers != null ? headers : super.getHeaders();
}
@Override
protected void deliverResponse(T response) {
listener.onResponse(response);
}
@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
try {
String json = new String(
response.data,
HttpHeaderParser.parseCharset(response.headers));
return Response.success(
gson.fromJson(json, clazz),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JsonSyntaxException e) {
return Response.error(new ParseError(e));
}
}
}
答案 1 :(得分:0)
您上级(iOS开发人员)的方法更好。我将解释原因。 Webservice / API家伙很容易从jsonString创建对象,您已将其作为请求发送给他,这样他就可以将所有输入全部取一个。另一方面,如果您在请求中将多个对象发送到Webservice / API。 Backenf的家伙必须做很多操纵。希望您对此有所了解。
更新
差异
发送JsonObject
优势
缺点
发送参数
优势
缺点