Android 我想在截取调用中将json对象作为参数发送
嗨,我知道voley呼叫发送参数使用Map 前 我是否需要添加标题或任何其他方法请建议我。我是android开发新手 这是postman chrome extension的屏幕截图 请帮助我。Android 我想在截取调用中将json对象作为参数发送,android,json,android-studio,android-volley,Android,Json,Android Studio,Android Volley,嗨,我知道voley呼叫发送参数使用Map 前 我是否需要添加标题或任何其他方法请建议我。我是android开发新手 这是postman chrome extension的屏幕截图 请帮助我。JsonObjectRequest jsObjRequest=新的JsonObjectRequest JsonObjectRequest jsObjRequest = new JsonObjectRequest (Request.Method.POST, url, json, new Re
JsonObjectRequest jsObjRequest=新的JsonObjectRequest
JsonObjectRequest jsObjRequest = new JsonObjectRequest
(Request.Method.POST, url, json, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
}
});
(Request.Method.POST、url、json、new Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//TODO自动生成的方法存根
}
});
您可以使用json参数中的上述代码发送json。import java.io.UnsupportedEncodingException;
import java.io.UnsupportedEncodingException;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;
public class CustomRequest extends Request<JSONObject> {
private Listener<JSONObject> listener;
private Map<String, String> params;
public CustomRequest(String url, Map<String, String> params,
Listener<JSONObject> reponseListener, ErrorListener errorListener) {
super(Method.GET, url, errorListener);
this.listener = reponseListener;
this.params = params;
}
public CustomRequest(int method, String url, Map<String, String> params,
Listener<JSONObject> reponseListener, ErrorListener errorListener) {
super(method, url, errorListener);
this.listener = reponseListener;
this.params = params;
}
protected Map<String, String> getParams()
throws com.android.volley.AuthFailureError {
return params;
};
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers));
return Response.success(new JSONObject(jsonString),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JSONException je) {
return Response.error(new ParseError(je));
}
}
@Override
protected void deliverResponse(JSONObject response) {
// TODO Auto-generated method stub
listener.onResponse(response);
}
导入java.util.Map;
导入org.json.JSONException;
导入org.json.JSONObject;
导入com.android.volley.NetworkResponse;
导入com.android.volley.ParseError;
导入com.android.volley.Request;
导入com.android.volley.Response;
导入com.android.volley.Response.ErrorListener;
导入com.android.volley.Response.Listener;
导入com.android.volley.toolbox.HttpHeaderParser;
公共类CustomRequest扩展了请求{
私人倾听者;
私有映射参数;
公共CustomRequest(字符串url、映射参数、,
侦听器reposeListener,ErrorListener ErrorListener){
super(Method.GET、url、errorListener);
this.listener=reponlistener;
this.params=params;
}
公共CustomRequest(int方法、字符串url、映射参数、,
侦听器reposeListener,ErrorListener ErrorListener){
super(方法、url、errorListener);
this.listener=reponlistener;
this.params=params;
}
受保护的映射getParams()
抛出com.android.volley.AuthFailureError{
返回参数;
};
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
试一试{
String jsonString=新字符串(response.data,
HttpHeaderParser.parseCharset(response.headers));
返回Response.success(新的JSONObject(jsonString),
HttpHeaderParser.parseCacheHeaders(响应));
}捕获(不支持的编码异常e){
返回Response.error(新的ParseError(e));
}捕获(JSONException je){
返回Response.error(newparseerror(je));
}
}
@凌驾
受保护的void deliverResponse(JSONObject响应){
//TODO自动生成的方法存根
onResponse(response);
}
}
使用CustomRequest并在参数中传递映射。将Object/Model/POJO类发送到volley post请求的步骤。
第1步:确保你的类应该是可分析的。
步骤2:重写模型类中的toString方法。
步骤3:创建映射,即
映射参数=新映射
();
JSONObject对象=新的JSONObject(classObject.toString())
参数put(“键”,对象)
第4步:将参数放入截击请求。尝试
JSONObject jsonObject1 = new JSONObject();
try {
jsonObject1.put("email", "abc@gmail.com");
jsonObject1.put("fname", "abc");
jsonObject1.put("lname", "def");
jsonObject1.put("pwd", "123");
} catch (JSONException e) {
e.printStackTrace();
}
Map<String, String> postParam = new HashMap<>();
postParam.put("jsonrpc", "2.0");
postParam.put("method", "signUp");
postParam.put("id", "1");
postParam.put("params", jsonObject1.toString());
CustomRequest jsObjRequest = new CustomRequest(
Request.Method.POST,
URL,
postParam, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
}
});
mRequestQueue.add(jsObjRequest);
JSONObject jsonObject1=新的JSONObject();
试一试{
jsonObject1.put(“电子邮件”abc@gmail.com");
jsonObject1.put(“fname”、“abc”);
jsonObject1.put(“lname”、“def”);
jsonObject1.put(“pwd”,“123”);
}捕获(JSONException e){
e、 printStackTrace();
}
Map postParam=新的HashMap();
postParam.put(“jsonrpc”,“2.0”);
postParam.put(“方法”、“注册”);
后参数put(“id”,“1”);
postParam.put(“params”,jsonObject1.toString());
CustomRequest jsObjRequest=新的CustomRequest(
Request.Method.POST,
网址,
postParam,新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
}
},new Response.ErrorListener(){
@凌驾
公共错误响应(截击错误arg0){
}
});
mRequestQueue.add(jsObjRequest);
Happy codeHashmap可能不会作为JSON对象发送。您是否获得了解决方案?您可以解释为什么您的解决方案能够提高您的贡献的价值?您的意思是什么?仅代码回答可能会解决问题,但不会教育读者当前的问题。试着在你的回答中提及任何限制、假设或简化(这是一个例外)
import java.io.UnsupportedEncodingException;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;
public class CustomRequest extends Request<JSONObject> {
private Listener<JSONObject> listener;
private Map<String, String> params;
public CustomRequest(String url, Map<String, String> params,
Listener<JSONObject> reponseListener, ErrorListener errorListener) {
super(Method.GET, url, errorListener);
this.listener = reponseListener;
this.params = params;
}
public CustomRequest(int method, String url, Map<String, String> params,
Listener<JSONObject> reponseListener, ErrorListener errorListener) {
super(method, url, errorListener);
this.listener = reponseListener;
this.params = params;
}
protected Map<String, String> getParams()
throws com.android.volley.AuthFailureError {
return params;
};
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers));
return Response.success(new JSONObject(jsonString),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JSONException je) {
return Response.error(new ParseError(je));
}
}
@Override
protected void deliverResponse(JSONObject response) {
// TODO Auto-generated method stub
listener.onResponse(response);
}
JSONObject jsonObject1 = new JSONObject();
try {
jsonObject1.put("email", "abc@gmail.com");
jsonObject1.put("fname", "abc");
jsonObject1.put("lname", "def");
jsonObject1.put("pwd", "123");
} catch (JSONException e) {
e.printStackTrace();
}
Map<String, String> postParam = new HashMap<>();
postParam.put("jsonrpc", "2.0");
postParam.put("method", "signUp");
postParam.put("id", "1");
postParam.put("params", jsonObject1.toString());
CustomRequest jsObjRequest = new CustomRequest(
Request.Method.POST,
URL,
postParam, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
}
});
mRequestQueue.add(jsObjRequest);