Android 我想在截取调用中将json对象作为参数发送

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

嗨,我知道voley呼叫发送参数使用Map 前

我是否需要添加标题或任何其他方法请建议我。我是android开发新手

这是postman chrome extension的屏幕截图

请帮助我。

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 code

Hashmap可能不会作为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);