我有一个 URI 字符串,如下所示:
我正在用这个字符串创建一个 java.lang.URI 实例,它成功了,但是当我想检索主机时,它返回 null。如果我完全按照上面显示的方式输入它,Opera 和 Firefox 也会阻塞在这个 URL 上。但是如果 URI 类无效,不应该抛出一个 URISyntaxException 吗?那么我怎样才能检测到 URI 是非法的呢?
当我使用产生的 URLDecoder 解码字符串时,它的行为也相同
http: //www.christlicheparteiösterreichs.at/steiermark/
现在这被 Opera 和 Firefox 接受,但 java.net.URI 仍然不喜欢它。我该如何处理这样的 URL?
谢谢
2种方法之间的区别是什么,请 stringByAddingPercentEscapesUsingEncoding:与stringByReplacingPercentEscapesUsingEncoding:?
我已经多次阅读过NSString Class Reference但仍然没有得到它.
另外,还有一种方法可以强制这些方法编码"+"符号吗?
在我的iPhone应用程序中,我必须urlencode base64编码(即字母,数字,加号和斜杠)头像,最后使用该CFURLCreateStringByAddingPercentEscapes方法而不是上述方法...
- (NSString*)urlencode:(NSString*)str
{
return (NSString*)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(
NULL,
(__bridge CFStringRef) str,
NULL,
CFSTR("+/"),
kCFStringEncodingUTF8));
}
Run Code Online (Sandbox Code Playgroud) 我在MVC 4 .NET应用程序中有一个控制器,它接收一个字符串作为URL的参数.这来自重定向到控制器的aspx页面Route.config.
如果我在客户端中为参数发送此值: fwdgerhb+bhrth+ftrgbhrt
我在服务器上获得以下值: fwdgerhb bhrth ftrgbhrt
服务器将URL参数值解释为编码的URL并替换+为.但它没有经过URL编码.对于特殊字符的其他组合,如果它们出现在参数值中,则会发生这种情况.
IIS服务器中是否有配置参数将服务器配置为不尝试对此值进行URL解码?
示例请求:
mypage.aspx?value=cat+dog (NOT ENCODED)
Run Code Online (Sandbox Code Playgroud)
路线配置
static void RegisterRoutes(RouteCollection routes)
{
routes.MapRouteLowercase(
name: "MyRouter",
url: "mypage.aspx",
defaults: new { controller = "My", action = "DoLog" }
);
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public class MyController : Controller
{
[AllowAnonymous]
public ActionResult DoLog(string value)
{
//Here value has "cat dog"
}
}
Run Code Online (Sandbox Code Playgroud) 如果我使用特殊的UTF8编码字符导航到以下URL,我会在Web浏览器中获得不同的结果:
我在哪里可以找到支持此功能的浏览器和版本列表,并且是否有关于新Microsoft Edge浏览器是否支持此功能的公告.
此 StackOverflow帖子为有兴趣的人强调了上述问题.
当在 ebay 中输入多词搜索词时,结果 URL 类似于(例如“demarini cf5 cf12”):
http://www.ebay.com/sch/i.html?_from=R40&_sacat=0&_nkw=demarini%20cf5%20cfc12
Run Code Online (Sandbox Code Playgroud)
我希望用 Python 构建这个 URL,以便可以直接访问它。所以这是连接基本 URL 的情况:
http://www.ebay.com/sch/i.html?_from=R40&_sacat=0&_nkw=
Run Code Online (Sandbox Code Playgroud)
...与搜索词。马上。我正在%20为空格添加 ,因此:
baseUrl = 'http://www.ebay.com/sch/i.html?_from=R40&_sacat=0&_nkw='
searchTerm = 'demarini cf5 cf12'
searchTerm = ('%20').join(searchTerm.split(' '))
finalUrl = baseUrl + searchTerm
Run Code Online (Sandbox Code Playgroud)
在 Python 中执行此操作的更正式方法是什么?我相信这种任务的名称是 URL 编码?
我无法将数组(int 数组)作为查询字符串参数传递给 RestSharp 客户端
var client = new RestClient(baseUrl);
client.Authenticator = new HttpBasicAuthenticator(username, password);
var request = new RestRequest(_endpoint, Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("contenttype", "application/json; charset=utf-8");
request.AddHeader("Accept", "text/html, application/xhtml+xml, image/jxr, */*");
//i tried with
request.AddParameter("messageIds", "[1,2,3]");
or
request.AddParameter("messageIds", new int[] {1,2,3} );
or
request.AddQueryParameter("messageIds", "[1,2,3]");
or
request.AddQueryParameter("messageIds", new int[] {1,2,3} );
Run Code Online (Sandbox Code Playgroud)
我认为问题与参数的 UrlEncoding 有关
如果我使用“new int[] {1,2,3}”(AddParameter 和 AddQueryParameter)传递值,则 url 的构建方式如下:
ResponseUri = {https://demo.xxxxxxxx.com:8181/ws/messages/zippedMessages?messageIds=System.Int32[]}
Run Code Online (Sandbox Code Playgroud)
如果我将值作为字符串“[1,2,3]”(AddParameter 和 AddQueryParameter)传递,则 url 的构建方式如下:
ResponseUri = {https://demo.xxxxxxxx.com:8181/ws/messages/zippedMessages?messageIds=[1%2C2%2C3]}
Run Code Online (Sandbox Code Playgroud)
相反,工作网址应该是:
ResponseUri = {https://demo.xxxxxxxx.com:8181/ws/messages/zippedMessages?messageIds=%5B1,2,3%5D}
Run Code Online (Sandbox Code Playgroud)
或者至少:
ResponseUri = {https://demo.xxxxxxxx.com:8181/ws/messages/zippedMessages?messageIds=[1,2,3]}
Run Code Online (Sandbox Code Playgroud)
“AddParameter”方法对逗号进行编码,但不对 …
我在一个查询参数中有一个哈希键,它可以与其他特殊字符一起使用+字符。问题是,当此URL得到解码时,URLDecoder将+ char转换为空间。有没有一种方法可以强制URLDecoder不将“ +”转换为空间。
当用户在我的网站上输入电子邮件时,我会发送包含链接的电子邮件验证电子邮件.链接看起来像:
http://mysite.com/VerifyEmail?email=name@domain.com&token=12341234
此特定用户的电子邮件包含"+"(加号),因此链接如下所示:
http://mysite.com/VerifyEmail?email=foo+bar@domain.com&token=12341234
单击链接时(至少在Firefox中)加上替换为空格.
问题:我在.net中使用什么URL编码功能来逃避加号.
注意:Uri.EscapeUriString(email)叶子加完整.
我知道查询字符串的最大长度因浏览器而异.Internet Explorer最多可包含2048个字符.
如果我在代码中执行URLEncode,这些编码字符是否会被视为额外字符?
例如,假设我有两个文本框.在通过查询字符串HttpUtility.UrlEncode(TextBox2.Text)传递文本框的值之前,我执行然后通过查询字符串将这些文本框值传递给另一个网页.
假设URL可能如下所示:WebForm2.aspx?Username=Kutti&Password=Pa%26%26word.
这个编码的东西%26%26是否会被视为URL中的额外字符?
换句话说,它会采取Pa%26%26word相同的字符Pa&&word吗?
我搜索了这么多,没有明确的说明用"x-www-form-urlencoded"内容类型发送POST请求.我想知道如何做到这一点,如果你知道如何用Alamofire这样做,那将是一个更好的方法.任何帮助将不胜感激.