我想使用 spring 库UriComponentsBuilder生成以下路径: '/app#/fragment1?test=toto'。
到目前为止我已经尝试过:
UriComponentsBuilder ucb = UriComponentsBuilder.fromPath("/app").fragment("fragment1").queryParam("test","toto");
ucb.toUriString(); // -> gives me as result : '/app?test=toto#/fragment1'
Run Code Online (Sandbox Code Playgroud)
知道如何以优雅的方式实现这一点吗?
我有一个非常简单的问题,但一些简单的谷歌搜索和 stachexchange 查询无法回答它,所以我想我在这里遗漏了一些东西。
这是我的简化参数:
我的问题是:在文本编码之前换行符是什么?(我知道编码后换行符将被编码为%0A)
我想问“解码 %0A 时解码什么字符”会是相同的。
我正在尝试从服务器获取列表。问题是,Retrofit 2.0 正在将我的请求转换为我的服务器无法接受的编码请求。所以我需要从请求中删除自动编码。我已经通过提出请求尝试了几乎所有解决方案encoded = true/false,但它根本不起作用。
现在的情况是:“POST”请求一切正常。有没有类似的方法可以通过“GET”调用来做到这一点?由于编码的 URL,GET 请求给我“400 Bad Request”。GET 中编码的主要问题。
后调用:
工作岗位
@FormUrlEncoded
@POST("login")
Call<UserBean> getLogin(@FieldMap Map<String,String> params);
Run Code Online (Sandbox Code Playgroud)
帖子编码 URL:(工作)
https://---.---.com/---/webservice/login?
jhobject=%7B%22data%22%3A%22%7B%5C%22username%5C%22%3A%5C%22abz%40cbv.com%5C%22%2C%5C%22password%5C%22%3A%5C%221234%40567%5C%22%2C%5C%22manufacturername%5C%22%3A%5C%22Android%5C%22%2C%5C%22modelname%5C%22%3A%5C%22XT1068%5C%22%2C%5C%22osversion%5C%22%3A%5C%223.4.42-g0a0ded4%5C%22%2C%5C%22countrycode%5C%22%3A%5C%22in%5C%22%2C%5C%22appversion%5C%22%3A%5C%221.0%5C%22%2C%5C%22imei%5C%22%3A%5C%22353325060286683%5C%22%2C%5C%22appfor%5C%22%3A%5C%22Sony%5C%22%7D%22%2C%22enc%22%3A%220%22%7D
Run Code Online (Sandbox Code Playgroud)
不工作 获取
@Headers({"Content-Type:application/x-www-form-urlencoded"})
@GET("getlisting")
Call<MyBean> getListing(@QueryMap Map<String,String> params);
Run Code Online (Sandbox Code Playgroud)
获取编码的 URL:(不起作用)
https://---.---.com/---/webservice/getlisting?
jhobject=%257B%2522data%2522%253A%257B%2522pageno%2522%253A%25221%2522%252C%2522totalpages%2522%253A%25220%2522%252C%2522recordperpages%2522%253A%252210%2522%252C%2522cstatus%2522%253A%25221%2522%252C%2522reportid%2522%253A%252253%2522%257D%252C%2522enc%2522%253A%25220%2522%252C%2522token%2522%253A%252209046d74-c047-4534-be0b-050dadad18b8%257E%257E23717%2522%257D
Run Code Online (Sandbox Code Playgroud) 我应该如何使用带有“application/x-www-form-urlencoded”和“multipart/form-data;”的 post 方法在 Faraday 中发送此 JSON 标题?
message = {
"name":"John",
"age":30,
"cars": {
"car1":"Ford",
"car2":"BMW",
"car3":"Fiat"
}
}
Run Code Online (Sandbox Code Playgroud)
我试过了:
conn = Faraday.new(url: "http://localhost:8081") do |f|
f.request :multipart
f.request :url_encoded
f.adapter :net_http
end
conn.post("/", message)
Run Code Online (Sandbox Code Playgroud)
这个 cURL 请求有效
curl -X POST \
http://localhost:8081 \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F 'message=2018-12-27 12:52' \
-F source=RDW \
-F object_type=Responses
Run Code Online (Sandbox Code Playgroud)
但我不太知道如何让它在法拉第工作。此外,cURL 请求中的数据不是嵌套的 JSON,因此我需要能够动态创建请求正文,因为我不会提前知道 JSON 的确切结构。
如果您需要更多详细信息或清晰度,请提出任何问题。
谢谢!
根据RFC 2396,
加号"+",美元"$"和逗号","字符已添加到
"保留"集中的字符,因为它们在查询组件中被视为保留字符.
确实,搜索这个网站"加+逗号,美元$",你得到
https://stackoverflow.com/search?q=plus+%2B+comma+,+dollar+ $
Plus仅在未被用作分隔符时进行编码(由应用程序).
但正如其他人所观察到的那样,.NET的UrlDecode功能将加号转换为空间.指定了这种行为在哪里?
我的桌面应用程序必须从Internet下载文件.文件的路径是已知的,文件名本身是半变量的,即其他人将在那里放置新文件,我的应用程序将不得不下载它们.
现在我想确保URL是安全的,并且它将被正确解释.另外,如果文件名中有'#'(你永远不知道),我确实希望它被编码.Javascript有两个不同的功能:encodeURI和encodeURIComponent.后者还编码'#'字符,以及其他内容.当然,我可以自己动手,但我认为必须有功能准备就绪,我不妨做出一些旧的错误.
我将使用一个使用WinInet系列API函数(InternetOpen及其同类)的对象下载该文件.
所以我开始在MSDN上搜索,当然,还有UrlCanonicalize.但也有UrlEscape,CreateUri(但这不存在于Delphi 2010单元中),最后是InternetCreateUrl,它要求我拆分整个URL.我宁愿将URL的第一部分与URLEncoded文件名连接起来.
此外,它们都有大量不同的标志,不同的默认值在Windows版本的过程中发生了变化,我再也无法弄清楚它们之间的差异.有人知道哪一个最适合这个目的吗?
我有一个使用Ajax的Drupal Web应用程序; 有时,Ajax函数需要将字符串作为参数传递给Drupal函数
$.ajax({url: "index.php?q=get_value/"+encodeURIComponent(value),
Run Code Online (Sandbox Code Playgroud)
当值包含斜杠时,无法从Drupal函数中识别出
function get_value($value) {
print urldecode($value);
Run Code Online (Sandbox Code Playgroud)
例如,如果传递的字符串是ABC/123,则get_value仅打印ABC
如何解决这个问题传递斜杠并从PHP/Drupal获取整个字符串?
在与Uri班级一起回答另一个问题时,我发现了一些对我来说很奇怪的东西:
考虑这两个Uris:
var u1 = new Uri("http://a.b:33/abc%2fdef/c?d=f");
var u2 = new Uri("foobar://a.b:33/abc%2fdef/c?d=f");
Run Code Online (Sandbox Code Playgroud)
他们的区别仅在于他们的计划.提供的标识符的所有其他元素都是相同的.
那么,为什么,当我转储Segments这些Uri实例的属性时,我是否看到以下输出u1:
/ abc/ def/ c
......但不同的输出u2?
/ abc%2fdef/ c
为什么不同方案的解析行为不同?
我正在尝试标准化我的网址中的邮件,而我正在使用URLEncoder.encode.我得到的问题是,输出似乎不是一个有效的网址.例如
val text = Some("test question (a) x (b) y").get
val query = "http://localhost:8080/ask?text=" + text
println(query)
val queryEnc = URLEncoder.encode(query, "UTF-8")
println(queryEnc)
Run Code Online (Sandbox Code Playgroud)
输出:
http://localhost:8080/ask?text=test question (a) x (b) y
http%3A%2F%2Flocalhost%3A8080%2Fask%3Ftext%3Dtest+question+%28a%29+x+%28b%29+y
Run Code Online (Sandbox Code Playgroud)
输出是否是有效的URL?(它看起来没有效果,因为我机器上的Chrome和Safari无法识别它).
假设我有以下字符串
honeypot=&name=Zelalem+Mekonen&email=zola%40programmer.net&message=Hello+And+this+is+a+test+message...
我想将其转换为url.Values结构,我有以下
data := url.Values{}
parameters := strings.Split(request.Body, "&")
for _, parameter := range parameters {
parts := strings.Split(parameter, "=")
data.Add(parts[0], parts[1])
}
Run Code Online (Sandbox Code Playgroud)
确实可以将其转换为,url.Values但是问题是它不会将url编码的值转换+为空格,所以首先有更好的方法来解析它吗?然后,如果不是,我该如何首先将url编码的字符串转换为普通字符串?
感谢您的帮助... o