Java 春云合同-如何通过+&引用;(加号)作为.yaml文件中的查询参数
当我尝试以不同的方式将“+”符号作为查询参数的一部分传递时,它会对任何结果进行编码 我希望用Java 春云合同-如何通过+&引用;(加号)作为.yaml文件中的查询参数,java,yaml,spring-cloud,Java,Yaml,Spring Cloud,当我尝试以不同的方式将“+”符号作为查询参数的一部分传递时,它会对任何结果进行编码 我希望用+380999418260值传递phone参数 尝试了最令人期待的正确方法: request: method: GET url: /customers/prepaid queryParameters: phone: "%2B380999418260" headers: Content-Type: application/x-www-form-urlencoded 还尝试直
+380999418260
值传递phone
参数
尝试了最令人期待的正确方法:
request:
method: GET
url: /customers/prepaid
queryParameters:
phone: "%2B380999418260"
headers:
Content-Type: application/x-www-form-urlencoded
还尝试直接从url传递:
request:
method: GET
url: /customers/prepaid?phone=%2B380999418260
headers:
Content-Type: application/x-www-form-urlencoded
两人都说手机是%2B380999418260
它从日志中转换%符号:
"X-Query-String":"phone=%252B380999418260"
我还尝试以非编码方式传递:
request:
method: GET
url: /customers/prepaid
queryParameters:
phone: "+380999418260"
headers:
Content-Type: application/x-www-form-urlencoded
但在本例中,它将+符号转换为空格字符
当我使用此uri从邮递员处访问此端点时,/customers/预付费?phone=%2B380999418260
返回正确的响应,其中使用了带有“+”符号的正确电话。根据,您不能直接传递+
符号,应该对其进行编码。但在服务器端,您可以使用类对接收到的字符串进行解码:
根据,您不能直接传递+
符号,它应该被编码。但在服务器端,您可以使用类对接收到的字符串进行解码:
@Pavel我使用反向函数
URLEncoder.encode(“+380999418260”)
对url的字符串进行编码。但无论如何,使用SpringCloud契约的问题是——我不能正确地传递加号,但我成功地通过了Postman。弹簧工具的问题。你能解释一下你想做什么吗?您通过url/customers/preadmid?phone=%2B380999418260
发送请求,下一步是什么?当我从邮递员处发送请求时,%2B380999418260
成功转换为+380999418260
,并返回正确的响应。但是,当我从Spring Cloud合同中执行此操作时,它不会将%2B380999418260
转换为任何内容,服务表示%2B380999418260
不是正确的参数。您尝试过此操作吗<代码>url:/客户/预付费?电话=+380999418260。我想可能有用。是的,我试过了。它变为phone=380999418260
。加号被转换为空格字符。@Pavel我使用了反向函数URLEncoder.encode(“+380999418260”)
对url的字符串进行编码。但无论如何,使用SpringCloud契约的问题是——我不能正确地传递加号,但我成功地通过了Postman。弹簧工具的问题。你能解释一下你想做什么吗?您通过url/customers/preadmid?phone=%2B380999418260
发送请求,下一步是什么?当我从邮递员处发送请求时,%2B380999418260
成功转换为+380999418260
,并返回正确的响应。但是,当我从Spring Cloud合同中执行此操作时,它不会将%2B380999418260
转换为任何内容,服务表示%2B380999418260
不是正确的参数。您尝试过此操作吗<代码>url:/客户/预付费?电话=+380999418260。我想可能有用。是的,我试过了。它变为phone=380999418260
。加号将转换为空格字符。
String myString = "%2B380999418260";
URLDecoder.decode(myString, "ISO-8859-1");
// output: +380999418260