Java POST方法不使用参数

Java POST方法不使用参数,java,android,android-volley,Java,Android,Android Volley,我不知道为什么getParams()在我的方法中不起作用 System.out.println在getHeaders下工作正常,但在getParams下工作不正常 //---------------------------------------POST request with headers--------------------------------------- public void post(String url, final String param1, final St

我不知道为什么getParams()在我的方法中不起作用

System.out.println在getHeaders下工作正常,但在getParams下工作不正常

    //---------------------------------------POST request with headers---------------------------------------
public void post(String url, final String param1, final String param2, String source) {

    // Request a string response from the provided URL.
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url,
            getReponse(source), createMyReqErrorListener()) {

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            HashMap<String, String> params = new HashMap<>();
            params.put("loginAlias", "username");
            params.put("loginPassword", "12345");
            System.out.println("Params are: " + params.toString());
            return params;
        }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<>();
            headers.put(ACCEPT, ACCEPT_JSON); //Accepting JSON
            headers.put(AUTH_ID, AUTH_ID_VALUE);  
            headers.put(PLATFORM, PLATFORM_VALUE); 
            headers.put(CID, ""); 
            headers.put(DEVICE_TYPE_MOBILE, DEVICE_TYPE_MOBILE_VALUE); 
            System.out.println("Headers are: " + headers.toString());
            return headers;
        }
    };
// Add the request to the RequestQueue.
    queue.add(request);
}
/------------------------------------使用标题发布请求---------------------------------------
public void post(字符串url、最终字符串param1、最终字符串param2、字符串源){
//从提供的URL请求字符串响应。
JsonObjectRequest=新的JsonObjectRequest(request.Method.POST,url,
GetResponse(源代码),createMyReqErrorListener(){
@凌驾
受保护的映射getParams()引发AuthFailureError{
HashMap params=新的HashMap();
参数put(“loginAlias”、“username”);
参数put(“登录密码”,“12345”);
System.out.println(“参数为:+Params.toString());
返回参数;
}
@凌驾
公共映射getHeaders()引发AuthFailureError{
HashMap headers=新的HashMap();
headers.put(ACCEPT,ACCEPT_JSON);//接受JSON
headers.put(AUTH\u ID,AUTH\u ID\u值);
headers.put(平台、平台值);
标题。将(CID,“”);
headers.put(设备类型移动,设备类型移动值);
System.out.println(“头是:”+Headers.toString());
返回标题;
}
};
//将请求添加到RequestQueue。
添加(请求);
}
我遵循了所有谷歌截击文档,并尝试了几个选项,但出于某种原因,这不起作用


谢谢

我也面临同样的问题,最后我发现volley-JSONObject请求存在一些问题。(几次谷歌搜索之后!)

getParams()不会调用,因为JsonObjectRequest扩展的JsonRequest直接调用getBody()将构造函数的第二个参数(调用requestBody)编码为contentType,这就是它忽略getParam()方法的原因

试试这个解决方案,它解决了我的问题

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);
    }
}

啊,太棒了!!!!是时候重构我的代码了!可以删除我所有不同的方法和不同的请求类型,即张贴,获取,放置,删除等!太神了我想这已经解决了我的缓存问题,我也有??现在似乎什么都没有了?我说的对吗?是的,行HttpHeaderParser.parseCacheHeaders(response));将管理它。:-)
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
CustomRequest jsObjRequest = new CustomRequest(Method.POST, url, params, this.createRequestSuccessListener(), this.createRequestErrorListener());

requestQueue.add(jsObjRequest);