get请求参数_get请求参数乱码 - CSDN
精华内容
参与话题
  • GET请求URL拼接参数

    万次阅读 2018-12-27 19:52:24
    1. 只拼接参数:(适用于拼接的参数中没有... * @Description get请求URL拼接参数 * @param url * 接口地址(无参数) * @param map * 拼接参数集合 */ public static String getAppendUrl(String url, Ma...

     1. 只拼接参数:(适用于拼接的参数中没有特殊字符)

    
        /**
    	 * @Description get请求URL拼接参数
    	 * @param url
    	 *            接口地址(无参数)
    	 * @param map
    	 *            拼接参数集合
    	 */
    	public static String getAppendUrl(String url, Map<String, String> map) {
    		if (map != null && !map.isEmpty()) {
    			StringBuffer buffer = new StringBuffer();
    			Iterator<Entry<String, String>> iterator = map.entrySet().iterator();
    			while (iterator.hasNext()) {
    				Entry<String, String> entry = iterator.next();
    				if (StringUtils.isEmpty(buffer.toString())) {
    					buffer.append("?");
    				} else {
    					buffer.append("&");
    				}
    				buffer.append(entry.getKey()).append("=").append(entry.getValue());
    			}
    			url += buffer.toString();
    		}
    		return url;
    	}
     

      2.拼接参数并且URL编码(适用于拼接参数中有特殊字符  eg:空格 之类的)

        /**
    	 * @Description get请求URL拼接参数 & URL编码
    	 * @param url
    	 *            接口地址(无参数)
    	 * @param map
    	 *            拼接参数集合
    	 */
    	public String getAppendUrl(String url, Map<String, String> map) {
    		StringBuffer buffer = new StringBuffer();
    		if (map != null && !map.isEmpty()) {
    			Iterator<Entry<String, String>> iterator = map.entrySet().iterator();
    			while (iterator.hasNext()) {
    				Entry<String, String> entry = iterator.next();
    				if (StringUtils.isEmpty(buffer.toString())) {
    					buffer.append("?");
    				} else {
    					buffer.append("&");
    				}
    				buffer.append(entry.getKey()).append("=").append(entry.getValue());
    			}
    		}
    		return url + URLEncoder.encode(buffer.toString());
    	}

     

    展开全文
  • ,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,如何是好? 解决办法 将这些字符转化成服务器可以识别的字符,对应关系如下: URL字符转义 用其它字符替代吧,或用全角的。 + URL 中+号表示空格 %2B ...

    url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,如何是好?
    解决办法
    将这些字符转化成服务器可以识别的字符,对应关系如下:
    URL字符转义

    用其它字符替代吧,或用全角的。

    +    URL 中+号表示空格                                 %2B   
    空格 URL中的空格可以用+号或者编码           %20 
    /   分隔目录和子目录                                     %2F     
    ?    分隔实际的URL和参数                             %3F     
    %    指定特殊字符                                          %25     
    #    表示书签                                                  %23     
    &    URL 中指定的参数间的分隔符                  %26     
    =    URL 中指定参数的值                                %3D

     

    比如我这里做的一个SSO功能中

     

    http://127.0.0.1:8080/mgWeb/login.do?type=jxemisLogin&url=http://localhost:8080/shop/admin/jxncOrder!qryOrderDetail.do?order_id=17347001822420000002&is_timeout=&is_history=no&staffId=******

     

    url=http://localhost:8080/shop/admin/jxncOrder!qryOrderDetail.do?order_id=17347001822420000002&is_timeout=&is_history=no

     

    url=中含有&符号

     

    可以使用 %26 替换 & 

     

    改动后:



    http://127.0.0.1:8080/mgWeb/login.do?type=jxemisLogin&url=http://localhost:8080/shop/admin/jxncOrder!qryOrderDetail.do?order_id=17347001822420000002%26is_timeout=%26is_history=no&staffId=******

     

    url=http://localhost:8080/shop/admin/jxncOrder!qryOrderDetail.do?order_id=17347001822420000002%26is_timeout=%26is_history=no

    将特殊符号替换掉

    var str = '少林寺3#101';
    var result = str.replace(/#/g, '%23');
    console.log('result:' + result); 

     

    展开全文
  • java获取GET和POST请求参数

    万次阅读 2017-08-31 11:56:30
    URL和参数列表 一 获取请求方式 request.getMethod() 二 获取请求类型 request.getContentType() 三 获取所有参数key request.getParameterNames() ,注:不适用contentType为multipart/form-data 四 ...

    URL和参数列表

    一 获取请求方式
    request.getMethod();    get和post都可用,

    二 获取请求类型

    request.getContentType();   get和post都可用,示例值:application/json ,multipart/form-data, application/xml等

    三 获取所有参数key

    request.getParameterNames();   get和post都可用,注:不适用contentType为multipart/form-data

    四 获取参数值value

    request.getParameter("test");   get和post都可用,注:不适用contentType为multipart/form-data

    五 获取取参数请求集合

    request.getParameterMap();   get和post都可用,注: 不适用contentType为multipart/form-data


    六 获取文本流

       request.getInputStream() 适用于如:application/json,xml,multipart/form-data文本流或者大文件形式提交的请求或者xml等形式的报文

    七 获取URL

    getRequestURL()

    八 获取参数列表:

    1.getQueryString()

    只适用于GET,比如客户端发送http://localhost/testServlet?a=b&c=d&e=f,通过request.getQueryString()得到的是a=b&c=d&e=f.


    2.getParameter()
    GET和POST都可以使用
    但如果是POST请求要根据<form>表单提交数据的编码方式来确定能否使用.
    当编码方式是(application/x- www-form-urlencoded)时才能使用.
    这种编码方式(application/x-www-form-urlencoded)虽然简单,但对于传输大块的二进制数据显得力不从心.
    对于传输大块的二进制数这类数据,浏览器采用了另一种编码方式("multipart/form-data"),这时就需要使用下面的两种方法.

    3.getInputStream()
    4.getReader()
    上面两种方法获取的是Http请求包的包体,因为GET方式请求一般不包含包体.所以上面两种方法一般用于POST请求获取参数.

    需要注意的是:
    request.getParameter()、 request.getInputStream()、request.getReader()这三种方法是有冲突的,因为流只能被读一次。
    比如:
    当form表单内容采用 enctype=application/x-www-form-urlencoded编码时,先通过调用request.getParameter()方法得到参数后,
    再调用request.getInputStream()或request.getReader()已经得不到流中的内容,
    因为在调用 request.getParameter()时系统可能对表单中提交的数据以流的形式读了一次,反之亦然。

    当form表单内容采用 enctype=multipart/form-data编码时,即使先调用request.getParameter()也得不到数据,
    所以这时调用request.getParameter()方法对 request.getInputStream()或request.getReader()没有冲突,
    即使已经调用了 request.getParameter()方法也可以通过调用request.getInputStream()或request.getReader()得到表单中的数据,
    而request.getInputStream()和request.getReader()在同一个响应中是不能混合使用的,如果混合使用就会抛异常。


    九:下面附上解析multipart/form-data格式的报文方法,

    示例报文如下:


    解析:(利用upload方式解析的可以忽略)

         /**
         * 解析multipart/form-data
         * @param res 这是通过request.getInputStream()都出来的报文
         * @param contentType multipart/form-data
         * @return  解析multipart/form-data格式提交过来的的流,转成json,这里忽略了报文中的“文件”部分,只解析“文本”字段
         */
        private static String getData(String res, String contentType) {
            BufferedReader reqbuf = null;
            JSONObject jsonObject = new JSONObject();
            try {
                final int NONE = 0; // 状态码,表示没有特殊操作
                final int DATAHEADER = 1; // 表示下一行要读到报头信息
                final int FIELDDATA = 2; // 表示下面要读到表单域的文本值
                String fieldname = ""; // 表单域的名称
                String fieldvalue = ""; // 表单域的值
                String boundary = ""; // 分界符字符串
                String lastboundary = ""; // 结束分界符字符串
                int pos = contentType.indexOf("boundary=");
                if (pos != -1) {
                    pos += "boundary=".length();
                    boundary = "--" + contentType.substring(pos); // 解析出分界符
                    lastboundary = boundary + "--"; // 得到结束分界符
                }
                // 起始状态为NONE
                int state = NONE;
                // 从字符串中得到输出缓冲流
                reqbuf = new BufferedReader(new StringReader(res));
                while (true) {
                    //读一行
                    String s = reqbuf.readLine();
                    //如果读到结束标志
                    if (s == lastboundary || s == null) {
                        break;
                    }
                    switch (state) {
                        case NONE:
                            if ((s.startsWith(boundary))) {
                                // 如果读到分界符,则表示下一行一个头信息
                                state = DATAHEADER;
                            }
                            break;
                        case DATAHEADER:
                            pos = s.indexOf("name=");
                            if(pos != -1){
                                pos += "name=".length() + 1; // 1表示后面的"的占位(引号的占位)
                                s = s.substring(pos, s.length() - 1);
                                fieldname = s; // 表单域的名称放入fieldname
                                state = FIELDDATA; // 设置状态码,准备读取表单域的值
                            }
                            break;
                        case FIELDDATA:
                            // 读取表单域的值,再次读取,因为中间有空行
                            s = reqbuf.readLine();
                            fieldvalue = s; // 存入fieldvalue
                            jsonObject.put(fieldname, fieldvalue);
                            state = NONE;
                            break;
                    }
                }
            } catch (IOException e) {
                log.error("解析异常", e);
            } finally {
                try {
                    reqbuf.close();
                } catch (IOException e) {
                    log.error("关闭异常", e);
                }
            }
            return jsonObject.toJSONString();
        }

    展开全文
  • 得到开发提供的接口文档...1. get请求的入参是json格式的 摘要: 利用httpClient调用接口,成功返回信息 接口地址: (RESTFUL方式) http://192.168.100.87:10051/ngcctcontrol/ws/interfaces/userSatisfy

    得到开发提供的接口文档后,就可以开始写脚本了,如:

    1. get请求的入参是json格式的

    摘要:

    利用httpClient调用接口,成功返回信息

    接口地址:
    (RESTFUL方式)

    http://192.168.100.87:10051/ngcctcontrol/ws/interfaces/userSatisfy

    请求方式:

    GET

    步骤:

    1利用httpClient模拟接口调用正常情况

    输入报文:

    {
        "params":{
            "beginTime":"2017-01-01 00:00:00",

    "endTime":"2017-01-25 00:00:00",

    "userSatisfy":"1",

    "userSatisfy2":"1",

    "serviceTypeId":"otck"
        },

    "object":[],

    "beans":[]
    }

     

    {\"params\":{\"beginTime\":\"2017-01-01 00:00:00\",\"endTime\":\"2017-01-25 00:00:00\",\"userSatisfy\":\"1\",\"userSatisfy2\":\"1\",\"serviceTypeId\":\"otck\"},\"object\":[],\"beans\":[]}

    beginTime,endTime,不大于30serviceTypeId//

    要用URLencode转码,参见另一篇文章《jmeter json入参转化为get的入参


    2. get请求是普通的键值对

    摘要:

    利用httpClient调用接口,成功返回异常信息

     

    输入参数:

    var param = {
                        "billId":"13312212121",
                        "log":"haha"
                    }

    接口地址:
    (RESTFUL方式)

    http://192.168.100.36:8843/ngbusi_gx/front/sh/custInfo!execute?uid=queryVpmnGrpInfoDetail

    请求方式:

    GET


    这个很简单,只要用&链接符把他们一个个都放到URL里面就可以了,如下(截图是POST请求点错了,应该是get)



    3,json格式的post请求

    摘要:

    利用httpClient调用接口,成功返回信息

    接口地址:
    (RESTFUL方式)

    http://192.168.100.87:10051/ngcctcontrol/ws/interfaces/contactsingleope

    请求方式:

    POST

    步骤:

    1利用httpClient模拟接口调用正常情况

    输入报文:

    {
        "params":{
            "serialNo":"201701231140480000000000154926",
            "contactId":"201701231140480000000000154926",

    "channelId":"08000701",

    "channelName":"4G管家",

    "mediaTypeId":"01",

    "mediaTypeName":"webChat",

    "callType":"0",

    "provinceId":"00030001",

    "ctiId":" 1",

    "ccid":" 1",

    "vdnId":" 1",

    "callId":"14640099272192501",

    "callIdTime":"1464009927",

    "callIdDsn":"21925",

    "callIdHandle":"0",

    "callIdServer":" 1",

    "callSkillId":" 1",

    "callerNo":"psx34_163.com",

    "calledNo":"5323738",

    "subsNumber":"13837829820",

    "orgCallerNo":"",

    "orgCalledNo":"045110086",

    "staffId":"HA10031",

    "remark":"",

    "contactStartTime":"2017-01-23 11:40:48",

    "contactEndTime":"2017-01-23 16:35:55",

    "playRecordFlag":"0",

    "qcFlag":"0",

    "qcStaffId":" HA 10001",

    "staffHangup":" 1",

    "surveyTypeId":" 01",

    "userSatisfy":" 1",

    "userSatisfy2":" 1",

    "userSatisfy3":" 1",

    "hasRecordFile":" 1",

    "custId":"",

    "custName":"",

    "custLevelId":"",

    "custLevelName":"",

    "custBrandId":"",

    "custBrandName":"",

    "custCityId":" 000300010011 ",

    "custCityName":"昌平",

    "custCityId2":" 000300010012 ",

    "custCityName2":"大兴",

    "firstResponseTime":"2017-01-23 11:40:48",

    "fstCharAttrVal":"",

    "secdCharAttrVal":"",

    "thrdCharAttrVal":"",

    "fothCharAttrVal":"",

    "fithCharAttrVal":"",

    "sxthCharAttrVal":"",

    "svthCharAttrVal":"",

    "egthCharAttrVal":"",

    "nithCharAttrVal":"",

    "tenCharAttrVal":"",

    "elevCharAttrVal":"",

    "twlfCharAttrVal":"",

    "thtnCharAttrVal":"",

    "fotnCharAttrVal":"",

    "fitnCharAttrVal":"",

    "sitnCharAttrVal":"",

    "svtnCharAttrVal":"",

    "eitnCharAttrVal":"",

    "nitnCharAttrVal":"",

    "twthCharAttrVal":"",

    "toUserId":"sinaweibo2001627641",

    "toUserName":"中国移动",

    "fromOrgId":"",

    "releaseReason":"",

    "staffCityId":"99100000",

    "staffProvinceId":"00030050",

    "startRingTime":"",

    "serviceTypeId":"otck",

    "ctiCallId":"",

    "callTrace":"",

    "digitCode":"",

    "srFlag":"",

    "languageId":"",

    "languageName":"",

    "callSkillName":"4G管家,集中坐席",

    "workNo":""
        },

    "object":[],

    "beans":[]
    }


    这个很简单,只要把入参放到BodyData里面就可以了,记得要先用json在线校验工具进行校验,另外要加http头管理器,在里面加上content-type:Application/json




    响应结果:

    由于json字符串在Body Data中传递,故请求的数据都在Post Data中,而post只有路径



    4.post请求的键值对

    除了放到BodyData里,有时候放到URL里,用&连接符,类似情况2的get请求。如下图的登录场景,传递用户名和密码



    可以看到参数是在POST中而非POST DATA



    5.parameters选项卡中填写而非bodydata,但与bodaydata效果一样

    注意:

    a.    name是空,没有填写,仅写了value,亦可传送

    b.    在Parameters中填写表格形式的入参,信息头管理器可以没有,但不可写成“Content-Type: application/json”否则报错



    展开全文
  •   我们平常浏览各个网站时,不免有时候就需要填写一些信息,比如注册时,登录时,这些信息一般都是通过GET请求...GET请求携带请求参数和请求头: @Test public void getParams() { // 获取连接客户端工具 Cl...
  • httpGET请求的传递参数的方式

    万次阅读 2019-09-23 13:43:32
    第一种:直接在URL后面加参数: localhost:21811/Handler1.ashx?id=1&name=“abc”; 如下图: 第二种:用超链接的方法传递参数:当点击超链接的时候,首先会跳转: localhost:21811/Handler1.ashx页面,然后还...
  • 关于http请求传参的总结

    万次阅读 2018-06-20 00:19:12
    以下均是测试所得,并不知道原理也没看过源码: getpostrequest.getQueryString()能否取到值。参数在url上能否request.getParameter()能否取到值能仅在contentType是application/x-www-form-urlencoded时可以...
  • get方式请求接受参数的方法

    千次阅读 2019-10-29 15:21:21
    1、获取jsp页面的url,然后通过js获取参数 function getQueryString(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = parent.document.location.search.substr(1).match(reg)...
  • Http- Post/Get请求参数值最大限制问题 网络编程都离不开Httpget/post请求。 get请求没有协议体,只有协议头,请求的参数是直接拼接在url的后面。 post有协议体也有协议头,参数值被解析成碎片存储在协议体中,...
  • http get请求参数拼接

    千次阅读 2019-08-20 08:19:53
    localhost:8080/hbinterface/orderInterface/groupReverseAccept.do?bizType=4&&bnetAccount=ESBTEST20150522OP&&bnetId=GD101140264&&customerType={accNbr:"13316268440","bnetId"...
  • nodejs接收get请求参数

    万次阅读 2017-11-30 23:20:23
    nodejs接收get请求参数 1.1-浏览器向服务器发送get请求参数的两种方式 1.2-服务端使用url模块解析get请求参数http协议中,一个完整的url路径如下图通过下图我们可以得知,get请求的参数是直接在url路径中显示。 ...
  • js获取get请求参数

    千次阅读 2019-07-01 15:16:11
    页面跳转时获取url问号后面带的参数 触发在html或者js中都可以 实施 js var $_GET = (function(){ var url = window.document.location.href.toString(); //获取的完整url var u = url.split("?"); if...
  • Netty4 HTTP请求参数解析(GET, POST)

    万次阅读 2015-12-23 01:09:49
    我们在使用Netty编写HTTP服务器时,一个非常痛苦的地方就是解析POST请求的代码真是太丑陋了,远没有servlet中...我们可以自己将HTTP请求参数封装成类似于servlet的调用方式。下面是一个RequestParser类,使用时只需:@
  • http get请求参数封装成map

    千次阅读 2019-03-08 15:37:10
    httpget请求参数工具类: public class UrlSpiltUtils { /** * 小程序拼接 * @param url * @return */ public static String urlSpilt(String url) { if (StringUtils.isNotBlank(url)) { if (url....
  • 一般在开发web应用的时候,如果提供...那么一个SpringBoot搭建的web应用可以如何解析发起的http请求参数呢? 下面我们将结合实例汇总一下GET请求参数的几种常见的解析姿势 原文:190824-SpringBoot系列教程web篇之...
  • go获取get请求参数

    千次阅读 2019-12-05 11:44:06
    代码 package main import ( "encoding/json" "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil...func handler(w http.ResponseWriter, r *http.R...
  • 遇到一个问题,springmvc get请求请求参数,接收方为对象,里面还有内置对象需要接参。 一开始以post的方式发送,一直报400错误。 深究get请求,接收对象的内置对象参数接收方式应当是: ...
  • 在发起GET请求的时候有一种情况,那就是参数包含URL参数,如下: http://www.abc123.com?url=http://www.def456.com?id=5&amp;userName=admin GET请求地址中参数url的值为 http://www.def456.com?id=5&...
  • HTTP GET/POST 请求参数长度

    千次阅读 2015-03-16 13:57:44
    http get方式参数的长度 http: http://www.cnblogs.com/Arlen/articles/1748026.html posted on 2010-05-31 11:15 Arlen 这个问题一直以来似乎是被N多人误解,其实Http Get方法提交的数据大小长度并没有限制...
  • get请求参数转化

    千次阅读 2018-07-12 21:04:30
    请求分页接口参数 { page:1, pageNum:10 } 1、插件方法 import { stringify } from 'qs'; const api_url = `${url}?${stringify(newOptions.params)}` 2、es7方法 // 参数 const params = { page:1, p...
1 2 3 4 5 ... 20
收藏数 1,287,977
精华内容 515,190
关键字:

get请求参数