Jux-L 2014-07-24 06:50 采纳率: 50%
浏览 13652
已采纳

android Volley Post请求参数丢失

自定义的Request
package cn.flymeal.androidApp.http;

import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;

import com.android.volley.AuthFailureError;
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;
import com.google.gson.Gson;

/**

  • 自定义网络请求(基于Volley)
  • @author zx
  • @param
    */
    public class GsonRequest extends Request {

    private static final String PROTOCOL_CHARSET = "utf-8";
    private static final String PROTOCOL_CONTENT_TYPE = String.format(
    "application/json; charset=%s", PROTOCOL_CHARSET);

    private Gson mGson;
    private final Listener mListener;
    private Map mParams=new HashMap(); ;
    private Class mClass;
    private Map headers = new HashMap();

    public GsonRequest(int method, String url, Class cls,
    Map params, Map headers,
    Listener listener, ErrorListener errorListener) {

    super(method, url, errorListener);
    mGson = new Gson();
    mClass = cls;
    mListener = listener;
    mParams = params;
    this.headers = headers;
    

    }

    /**

    • 将返回的数据处理
      */
      @Override
      protected Response parseNetworkResponse(NetworkResponse response) {
      try {
      String jsonString = new String(response.data,
      HttpHeaderParser.parseCharset(response.headers));
      T parseJson = mGson.fromJson(jsonString, mClass);
      return Response.success(parseJson,
      HttpHeaderParser.parseCacheHeaders(response));

      } catch (UnsupportedEncodingException e) {
      return Response.error(new ParseError(e));
      }
      }

    @Override
    protected void deliverResponse(T response) {

    mListener.onResponse(response);
    

    }

    @Override
    public Map getHeaders() throws AuthFailureError {

    return headers != null ? headers : super.getHeaders();
    

    }

    public void setHeaders(Map headers) {

    this.headers = headers;
    

    }

    @Override
    public String getBodyContentType() {

    return PROTOCOL_CONTENT_TYPE;
    

    }

    @Override
    protected Map getParams() throws AuthFailureError {

    return mParams;
    

    }

}
这是分装好的一个发送请求的方法
/**
* 基于Gson的网络Volley请求(新接口返回数据格式Volley请求)
*
* @param method
* @param url
* @param params
* @param requestListener
*/
public void executeGsonRequest(int method, String url,
Map params, Map headers,
final RequestListener requestListener) {

    requestListener.onStart();

    request = new GsonRequest<ResponseData>(method, url, ResponseData.class,
            params, headers, new Listener<ResponseData>() {

                @Override
                public void onResponse(ResponseData response) {


                    if (response.getStatus().equals("success")) {

                        requestListener.onSuccess(response.getData());
                        Log.i("volley", response.toString());

                    } else {

                        requestListener.onMessage(response.getMsg());
                    }

                    closeDialog();
                }

            }, new ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {

                    error.printStackTrace();
                    if (error instanceof NetworkError) {
                    } else if (error instanceof ServerError) {
                    } else if (error instanceof AuthFailureError) {
                    } else if (error instanceof ParseError) {
                    } else if (error instanceof NoConnectionError) {
                    } else if (error instanceof TimeoutError) {
                    }
                    requestListener.onError(error);
                    closeDialog();
                }
            });
    requestQueue.add(request);

}

public void checkNum(Context context,String str,RequestListener requestListener){

    UrlParamJoin urlJoin=new UrlParamJoin("mvc/order/api/mobile/submitOrder.do");
    Map<String, String> headers=new HashMap<String, String>();
    headers.put(GlobalConstant.API_VERSION, "v3");
    Map<String, String> param=new HashMap<String, String>();
    param.put("orderStr", str);
    FlymealHttpClient httpClient=new FlymealHttpClient(context);
    httpClient.executeGsonRequest(Method.POST, urlJoin.getUrl(), param, headers, requestListener);

}

这是一个业务方法 求大神指导为什么POST请求参数没有传过去 ?在线等!!!1

  • 写回答

8条回答

  • merlynee 2015-01-07 08:13
    关注

    有些版本的volley只支持StringRequest,然后参数以getParams形式传入,提交方式为GET,楼主试一下吧,应该可以

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler