精华内容
下载资源
问答
  • 一、URL 参数特殊字符说明 不管是以何种方式传递url时,如果要传递的url中包含特殊字符,如想要传递一个+,但是这个+会被url会被编码成空格,想要传递&,被url处理成分隔符。 尤其是当传递的url是经过Base64加密...

    一、URL 参数特殊字符说明

    不管是以何种方式传递url时,如果要传递的url中包含特殊字符,如想要传递一个+,但是这个+会被url会被编码成空格,想要传递&,被url处理成分隔符。
    尤其是当传递的url是经过Base64加密或者RSA加密后的,存在特殊字符时,这里的特殊字符一旦被url处理,就不是原先你加密的结果了。

    二、URL 特殊参数产生的问题,如下

    定义方法
    在这里插入图片描述
    访问,传入 + 参数变为了空格。
    在这里插入图片描述

    解决办法:

    将+变为对应的编码 %2B
    在这里插入图片描述

    三、URL特殊符号及对应的编码:

    在这里插入图片描述

    四、RPC调用,特殊字符转码

    URLEncoder.encode 将特殊字符转译
    URLDecoder.decode 将转译的特殊字符还原

    String encode = URLEncoder.encode("1+1", "UTF-8");
    String decode = URLDecoder.decode(encode, "UTF-8");
    

    使用如下:

            String url = "http://127.0.0.1:8080/tranIndex?";
            
    		// 参数转码
    		String strParam = "name=" + URLEncoder.encode("1+1", "utf-8");
    		String newUrl = url + strParam;
      	    // 请求接口
    		String result = HttpClientUtils.httpGet(newUrl);
    		System.out.println("result:" + result);
    
    展开全文
  • --------后端框架FastAPIURL解析器会将其视为截断,于是URL截断成了"https://live.polyv.net/",后续流程旧报错了。 于是我们编写一个函数来对目标字符进行查询,如果属于特定字符,则返回:%加上该字符的ASCII ...

    背景:自动化测试中遇到一个不太规范的URL:[https://live.polyv.net/#/channel/2357792/monitoring-v3]

    这个URL本身功能是没问题的,相信你也看出来它中间包含’#‘号,呵~ 问题就出在’#'号上, 因为:
    • FastAPI的URL解析器会将其截断,最终的URL被截断成了"https://live.polyv.net/"

    解决方法:

    编写URL字符过滤器,检测到有特殊字符,则将其%加上该字符的ASCII十六进制编码

    def do_you_need_transcoding(target_single_str):
        special_character_list = ['+', ' ', '/', '?', '%', '#', '&', '=']
        if target_single_str in special_character_list:
            # ord转ASCII, hex转16进制
            return ''.join(('%', hex(ord(target_single_str))[2:]))
        else:
            # 无需处理, 返回原字符
            return target_single_str
    
     
    if __name__ == '__main__':
        print(do_you_need_transcoding('&'))
        print(do_you_need_transcoding(' '))
    
    展开全文
  • Java url中文转码

    千次阅读 2020-06-04 10:12:59
    Java有时在执行get,post请求时,参数有时是中文,此时需要转码,才可请求!...String url = "https://test.com/api/login?username="+username; https://test.com/api/login?username=%E5%BC%A0%E4%B8%89 ...

    Java有时在执行get,post请求时,参数有时是中文,此时需要转码,才可请求!

    import java.net.URLEncoder;
    
    String username = URLEncoder.encode("张三", "UTF-8");
    String url = "https://test.com/api/login?username="+username;
    

    https://test.com/api/login?username=%E5%BC%A0%E4%B8%89

    展开全文
  • URL特殊字符转码

    2019-11-17 00:09:02
    什么是URL转码 不管是以何种方式传递url时,如果要传递的url中包含特殊字符,如想要传递一个+,但是这个+会被url会被编码成空格,想要传递&,被url处理成分隔符。 尤其是当传递的url是经过Base64加密或者RSA...

    什么是URL转码

    不管是以何种方式传递url时,如果要传递的url中包含特殊字符,如想要传递一个+,但是这个+会被url会被编码成空格,想要传递&,被url处理成分隔符。

    尤其是当传递的url是经过Base64加密或者RSA加密后的,存在特殊字符时,这里的特殊字符一旦被url处理,就不是原先你加密的结果了。

    url特殊符号及对应的编码:

    符号

    url中的含义

    编码

    +

    URL 中+号表示空格

    %2B

    空格

    URL中的空格可以用+号或者编码

    %20

    /

    分隔目录和子目录

    %2F

    ?

     

     

     

     

     

     

     

    分隔实际的URL和参数

    %3F

    %

    指定特殊字符

    %25

    #

    表示书签

    %23

    &

    URL中指定的参数间的分隔符

    %26

    =

    URL中指定参数的值

    %3D

    package com.learn.utils;
    
    import java.io.IOException;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpHost;
    import org.apache.http.HttpStatus;
    import org.apache.http.client.config.RequestConfig;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClientBuilder;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import com.alibaba.fastjson.JSONObject;
    
    /**
     * HttpClient4.3工具类
     */
    public class HttpClientUtils {
    	private static Logger logger = LoggerFactory.getLogger(HttpClientUtils.class); // 日志记录
    
    	private static RequestConfig requestConfig = null;
    
    	static {
    		// 设置请求和传输超时时间
    		requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();
    	}
    
    	/**
    	 * post请求传输json参数
    	 * 
    	 * @param url
    	 *            url地址
    	 * @param json
    	 *            参数
    	 * @return
    	 */
    	public static JSONObject httpPost(String url, JSONObject jsonParam) {
    
    		// post请求返回结果
    		CloseableHttpClient httpClient = HttpClients.createDefault();
    		JSONObject jsonResult = null;
    		HttpPost httpPost = new HttpPost(url);
    		// 设置请求和传输超时时间
    		httpPost.setConfig(requestConfig);
    		try {
    			if (null != jsonParam) {
    				// 解决中文乱码问题
    				StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");
    				entity.setContentEncoding("UTF-8");
    				entity.setContentType("application/json");
    				httpPost.setEntity(entity);
    			}
    			CloseableHttpResponse result = httpClient.execute(httpPost);
    			// 请求发送成功,并得到响应
    			if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
    				String str = "";
    				try {
    					// 读取服务器返回过来的json字符串数据
    					str = EntityUtils.toString(result.getEntity(), "utf-8");
    					// 把json字符串转换成json对象
    					jsonResult = JSONObject.parseObject(str);
    				} catch (Exception e) {
    					logger.error("post请求提交失败:" + url, e);
    				}
    			}
    		} catch (IOException e) {
    			logger.error("post请求提交失败:" + url, e);
    		} finally {
    			httpPost.releaseConnection();
    		}
    		return jsonResult;
    	}
    
    	/**
    	 * post请求传输String参数 例如:name=Jack&sex=1&type=2
    	 * Content-type:application/x-www-form-urlencoded
    	 * 
    	 * @param url
    	 *            url地址
    	 * @param strParam
    	 *            参数
    	 * @return
    	 */
    	public static JSONObject httpPost(String url, String strParam) {
    		// post请求返回结果
    		CloseableHttpClient httpClient = HttpClients.createDefault();
    		JSONObject jsonResult = null;
    		HttpPost httpPost = new HttpPost(url);
    		httpPost.setConfig(requestConfig);
    		try {
    			if (null != strParam) {
    				// 解决中文乱码问题
    				StringEntity entity = new StringEntity(strParam, "utf-8");
    				entity.setContentEncoding("UTF-8");
    				entity.setContentType("application/x-www-form-urlencoded");
    				httpPost.setEntity(entity);
    			}
    			CloseableHttpResponse result = httpClient.execute(httpPost);
    			// 请求发送成功,并得到响应
    			if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
    				String str = "";
    				try {
    					// 读取服务器返回过来的json字符串数据
    					str = EntityUtils.toString(result.getEntity(), "utf-8");
    					// 把json字符串转换成json对象
    					jsonResult = JSONObject.parseObject(str);
    				} catch (Exception e) {
    					logger.error("post请求提交失败:" + url, e);
    				}
    			}
    		} catch (IOException e) {
    			logger.error("post请求提交失败:" + url, e);
    		} finally {
    			httpPost.releaseConnection();
    		}
    		return jsonResult;
    	}
    
    	/**
    	 * 发送get请求
    	 * 
    	 * @param url
    	 *            路径
    	 * @return
    	 */
    	public static JSONObject httpGet(String url) {
    		HttpHost proxy = new HttpHost("localhost", 8888);
    		RequestConfig config = RequestConfig.custom().setProxy(proxy).setConnectTimeout(10000).setSocketTimeout(15000)
    				.build();
    		CloseableHttpClient client = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
    
    		// get请求返回结果
    		JSONObject jsonResult = null;
    		// 发送get请求
    		HttpGet request = new HttpGet(url);
    		request.setConfig(requestConfig);
    		try {
    			CloseableHttpResponse response = client.execute(request);
    
    			// 请求发送成功,并得到响应
    			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
    				// 读取服务器返回过来的json字符串数据
    				HttpEntity entity = response.getEntity();
    				String strResult = EntityUtils.toString(entity, "utf-8");
    				// 把json字符串转换成json对象
    				jsonResult = JSONObject.parseObject(strResult);
    			} else {
    				logger.error("get请求提交失败:" + url);
    			}
    		} catch (IOException e) {
    			logger.error("get请求提交失败:" + url, e);
    		} finally {
    			request.releaseConnection();
    		}
    		return jsonResult;
    	}
    
    }
    package learn_b;
    
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    
    import com.alibaba.fastjson.JSONObject;
    import com.learn.utils.HttpClientUtils;
    
    public class Test001 {
    
    	public static void main(String[] args) {
    		// Java 提供Http协议 特殊字符转码类
    		String encode = URLEncoder.encode("1+1");
    		System.out.println("encode:" + encode);
    		System.out.println("decode:" + URLDecoder.decode(encode));
    		String userNameUrl = "http://127.0.0.1:8080/indexPage?userName=" + URLEncoder.encode("1+1");
    		JSONObject result = HttpClientUtils.httpGet(userNameUrl);
    		System.out.println("result:" + result);
    		// 注意事项 不要整个URL进行编码,只是针对于参数编码
    	}
    
    }
    
    package com.learn.api.controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.learn.base.BaseApiService;
    import com.learn.base.ResponseBase;
    
    // http协议特殊字符处理
    @RestController
    public class IndexController extends BaseApiService {
    
    	// 1. 什么是特殊字符处理(rpc远程通讯 实现加密 + ?) 正好和http特殊相同,导致会转成空格
    	// 2. 注意事项
    	@RequestMapping("/indexPage")
    	public ResponseBase indexPage(String userName) {
    		System.out.println("userName:" + userName);
    		return setResultSuccessData(userName);
    	}
    
    }
    

     

    展开全文
  • Web API 之 — URL API

    2020-07-04 22:18:17
    URL API 是浏览器根据 Whatwg 的标准[https://url.spec.whatwg.org/]实现的一组 API。通常自己去写正则或循环去解析 URL 时,很难考虑全各种边边角角的问题,导致意想不到的错误。而有了这组 API,就可以方便准确地...
  • url转码

    2015-09-09 11:02:18
    目前URLEncoder.encode(str,”utf-8”)转码方式是encodeURLcomponent的方式,也就是对于特殊字符它也会转码,比如`http://192.168.1.20:2000/api/work-orders/pe`nding?$count=true转码后会变成...
  • escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。 采用unicode字符集对指定的字符串除0-255以外进行编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx...
  • URL转码

    2016-10-18 18:52:59
    研究了一下后知道了原因,原来是在URL地址中所谓的汉字最后都做了转码,将汉字转成一群乱码,然后发送至服务器请求json或者xml数据。废话不多说,上源码: package com.hisign.csipadmini_free.biz; import ...
  • 不管是以何种方式传递url时,如果要传递的url中包含特殊字符,如想要传递一个+,但是这个+会被url会被编码成空格,想要传递&,被url处理成分隔符。 尤其是当传递的url是经过Base64加密或者RSA加密后的,存在特殊...
  • json.Jsonencoder().encode(data)为转为jsonch.decode("unicode_escape")为中文转unicode
  • js对文字进行编码涉及3个函数:escape,encodeURI,...1、传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。 例如: txt = txt + '我已经给@' + tour+ '投票了哦!~你也
  • java的api中文转码示例

    2010-04-15 22:23:42
    java的api中文转码,方便url传参,等应用
  • 这篇文章主要介绍了如何通过JS实现转码与解码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 escape 和 unescape escape()不能直接用于URL编码,它的真正作用...
  • 我在做fastdfs下载的时候用到下载链接重定向,为了让文件原名称显示...一步一步跟踪可发现在接收的request中,该值被转义为类似”%85%45%151”形式的字符,然后接收url值时未将汉字字符转义回来。给出如下解决方法:...
  • escape() 方法: 采用ISO Latin字符集对指定的字符串...所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符:! * ( )
  • URL中用 encodeURIComponent 进行转码后,在asp.net C# 后台代码中可以通过HttpContext.Current.Request.Url.ToString() 获取转码后的完整URL,如果需要获取Url中传递的“汉字”等参数,再通过截取字符串的方式获取...
  • , title:this.goods.title+item.name+item.price+this.goods.otherData.join(','), price:item.price, id:this.goods.id, shopId:this.goods.shopId } uni.navigateTo({ url:'../order/...
  • 目录 ### 前端代码 ### 输出结果 ... //将传过来的参数进行转码(我这边先将转为JSON格式) var str = encodeURI(JSON.stringify(keywords)); //打印出转码结果 console.log(str) ..
  • python url安全转码

    千次阅读 2018-11-20 17:17:42
    import string from urllib.request import urlopen from urllib.parse import quote # parse 解析 quote 引用 ...# 但是在url执行的时候 中文会被转码 # 如果不进行转码 程序会出错 url = 'http:...
  • 有一个项目 需要用到ShareSDK实现分享,点击分享内容,需要跳转到指定的url,不带参数的url非常好跳,也没什么问题,但是 带了参数或者服务器返回中文字符串之后: 比如http://localhost:8080/testShare?¶m={...
  • 小程序url的编码和解码方式

    千次阅读 2020-04-22 17:27:00
    url = encodeURIComponent('/' + url + '?itemid=' + currentPage.options.itemid); console.log(url,decodeURIComponent(url));
  • ssm框架知识点

    千次阅读 2019-11-12 23:01:41
    (7)降低了Java EE API的使用难度:Spring对Java EE开发中非常难用的一些API(如:JDBC、JavaMail等),都提供了封装,使这些API应用难度大大降低。。 2、IoC的全称是Inversion of Control,中文名称为控制反转。...
  • url转码与编码

    2018-11-22 14:12:07
    1、先弄清楚为什么要 urlencode? ...URL Encoding is the process of converting string into valid URL format. Valid URL format means that the URL co...
  • 项目经测试,发现从IE提交的数据,汉字会变成乱码,实验了网上很多网友说的给ajax加上...于是开始试验进行URL编码解码,一开始我是很不想这么干,因为这意味着我的后台也要对应的解码,现在没办法了,于是考虑用一...
  • 摘要: 当常规的转码工作流无法满足用户的场景时,需用户自己判断业务逻辑,并使用API提交转码任务。例如:并不是所有的视频都需要转码,不同视频需要设置不同的转码配置。本文将介绍API提交转码任务的方法。当常规...
  • <pre><code>{"error":"01\u003e invalid URL escape \"%$\\xf4\""} </code></pre> <p>In postman api it's working without error. What is wrong? How I can fix it for the browser? </div>

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,749
精华内容 4,299
关键字:

url转码api