使用volley进行post请求,参数中无故多出&

问题描述

使用volley进行post请求,参数中无故多出&

使用volley进行post请求,C#在接收到的时候参数中多了个&,源码如下:

 RequestQueue requestQueue = Volley.newRequestQueue(this);
        StringRequest postRequest = new StringRequest(Request.Method.POST, url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        // 处理返回的JSON数据
                        Log.d("Response", response);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.e("Response", error.getMessage(), error);
                    }
                }) {
            @Override
            protected Map<String, String> getParams() {
                // POST 参数
                Map<String, String> params = new HashMap<String, String>();
                params.put("action", action);
                // 本机号码
                params.put("Mobile", getNativePhoneNumber());
                params.put("Message", message);
                params.put("SendPhone", from);
                return params;
            }

C#接收到的参数在SendPhone的值后面却多了个“&”!

请问这是怎么回事呢?

解决方案

/**
* Converts params into an application/x-www-form-urlencoded encoded string.
*/
private byte[] encodeParameters(Map params, String paramsEncoding) {
StringBuilder encodedParams = new StringBuilder();
try {
for (Map.Entry entry : params.entrySet()) {
encodedParams.append(URLEncoder.encode(entry.getKey(), paramsEncoding));
encodedParams.append('=');
encodedParams.append(URLEncoder.encode(entry.getValue(), paramsEncoding));
encodedParams.append('&');
}
return encodedParams.toString().getBytes(paramsEncoding);
} catch (UnsupportedEncodingException uee) {
throw new RuntimeException("Encoding not supported: " + paramsEncoding, uee);
}
}
看最后Volley进行参数封装的时候 最后一个&字符没有去除

时间: 2024-07-28 14:52:04

使用volley进行post请求,参数中无故多出&amp;amp;的相关文章

学习SpringMVC——如何获取请求参数详解_java

@RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView)!它(@ModelAttribute)!没错,仅注解这块,spring mvc就为你打开了五彩斑斓的世界.来来来,不要兴(mi)奋(hu),坐下来,我们好好聊聊这么些个注解兄弟们~~~(wait, 都没有听过? 好,来,你坐前排,就你!)  一.spring mvc如何匹配请求路径--"请求路径哪家

springMvc源码学习之:spirngMVC获取请求参数的方法2

@RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他 (@CookieValue)!她(@ModelAndView)!它(@ModelAttribute)!没错,仅注解这块,spring mvc就为你打开了五彩斑斓的世界.来来来,不要兴(mi)奋(hu),坐下来,我们好好聊聊这么些个注解兄弟们~~~(wait, 都没有听过? 好,来,你坐前排,就你!)   一.spring mvc如何匹配请求路径--"请求路径

Android中Volley框架进行请求网络数据的使用_Android

问题的阐述:Android SDK中的HttpClient和HttpUrlConnection两种请求方式用来处理网络的复杂的操作,但当应用比较复杂的时候需要我们编写大量的代码处理很多东西:图像缓存,请求的调度等等: 解决:Volley就是为解决这些而生,它与2013年Google I/O大会上被提出:使得Android应用网络操作更方便更快捷:抽象了底层Http Client等实现的细节,让开发者更专注与产生RESTful Request.另外,Volley在不同的线程上异步执行所有请求而避免

二进制-volley发送POST请求,new JSONObject(params)时候参数出错,怎么办啊

问题描述 volley发送POST请求,new JSONObject(params)时候参数出错,怎么办啊 volley发送POST请求,在某些机型下,**new JSONObject(params)时候,params中的二进制数组被toString了**,怎么办啊....T T. 使用的是JSONObjectRequest(Method.POST,url,new JSONObject(params),...,...) 代码如下: 打印出的信息如下: fileByte在正常手机上打印出的是如[1

Android中Volley框架进行请求网络数据的使用

问题的阐述:Android SDK中的HttpClient和HttpUrlConnection两种请求方式用来处理网络的复杂的操作,但当应用比较复杂的时候需要我们编写大量的代码处理很多东西:图像缓存,请求的调度等等: 解决:Volley就是为解决这些而生,它与2013年Google I/O大会上被提出:使得Android应用网络操作更方便更快捷:抽象了底层Http Client等实现的细节,让开发者更专注与产生RESTful Request.另外,Volley在不同的线程上异步执行所有请求而避免

strut2-Struts2 如何发送参数中带有list对象的请求

问题描述 Struts2 如何发送参数中带有list对象的请求 状态描述: 需要从SSH环境中发送一个POST请求到网络上的某个获取数据的URL,但是此Url的post请求中有一个对象Object1,object1包含两个List的对象,我从网络上查了很多发送post请求的数据,但是根本无法找到如何在请求中加入list的,当时我想是不是可以用url?param=object1.list.get(0).param = value来进行传递,但是没成功. 我知道在PHP中有的POST请求封装的非常顶

post请求-android Volley Post请求参数丢失

问题描述 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.NetworkR

请求参数返回数据成功-android开发,网络中可以请求返回数据

问题描述 android开发,网络中可以请求返回数据 android开发,在一个网络中可以请求参数返回数据成功,在另一个网络下请求不成功!这是什么原因啊? 解决方案 首先分析这两个网络环境的差异,原因肯定就在这个差异当中.然后分析是发送不成功还是服务器没有收到还是服务器的返回没有收到还是返回的数据是有问题,找到问题在哪里. 解决方案二: 这个网络的差异就是进不去的网络被禁用了一些端口,只是有些接口不可访问,有些接口可以访问.

c发出一个http请求 参数 在 请求的数据体中 如何在java服务器里获取 感激不尽

问题描述 c发出一个http请求 参数 在 请求的数据体中 如何在java服务器里获取 感激不尽 解决方案 java 模拟http请求获取数据 解决方案二: 不知道楼主发出的请求是让java服务器接收还是什么意思