标签: url-encoding

为什么我必须为Net :: HTTP请求提供URI.encode甚至安全字符?

我试图使用Net :: HTTP向Twitter发送GET请求(因隐私原因而替换用户ID):

url = URI.parse("http://api.twitter.com/1/friends/ids.json?user_id=12345")
resp = Net::HTTP.get_response(url)
Run Code Online (Sandbox Code Playgroud)

这会在Net :: HTTP中引发异常:

NoMethodError:未定义的方法empty?' for #<URI::HTTP:0x59f5c04> from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1470:in初始化'

巧合的是,我偶然发现了一个类似的代码片段,URI.encode之前使用过URI.parse,所以我复制了它并再次尝试:

url = URI.parse(URI.encode("http://api.twitter.com/1/friends/ids.json?user_id=12345"))
resp = Net::HTTP.get_response(url)
Run Code Online (Sandbox Code Playgroud)

现在它工作正常,但为什么?有迹象表明,需要在逃避我提到的网址没有保留字符,所以为什么我要调用URI.encodeget_response成功吗?

ruby http url-encoding

6
推荐指数
1
解决办法
5169
查看次数

是否建议在URL中使用非ascii字符?

我们目前正在开展I18N项目.我想知道在URL中使用非ascii字符有什么复杂性.如果不可取,​​有什么办法可以解决这个问题?

编辑(回应Maxym的回答):该网站将成为特定国家的本地网站,我不必担心全世界公众访问该网站.我明白从可用性的角度来看,这真的很烦人.与此相关的其他技术问题是什么?

language-agnostic url ascii internationalization url-encoding

6
推荐指数
1
解决办法
5211
查看次数

为什么apache-commons lib编码空间为+而不是%20?

我使用URLCodecApache的百科全书编解码器编码的网址,但其编码空间,+还不如%20

为什么?什么是解决方案?

java url-encoding apache-commons apache-commons-codec

6
推荐指数
1
解决办法
4825
查看次数

如何创建隐藏其参数的Wicket URL?

我目前正在创建一组包含以下代码的链接:

BookmarkablePageLink<CheeseMain> havarti =
    new BookmarkablePageLink<CheeseMain>("havarti", CheeseMain.class);
havarti.setParameter("Title", "Havarti");
havarti.setParameter("Group", "cheeseName");
add(havarti);
Run Code Online (Sandbox Code Playgroud)

出来的URL具有格式 https://mysite.com/;jsessionid=B85EE5CB0349CCA2FE37AF76AB5C30C1?wicket:bookmarkablePage=:com.mycompany.cheese.CheeseMain&Title=Havarti&group=cheeseName.

我的问题是我不再希望此链接的URL是可收藏的.理想情况下,我希望它是一个简单的东西https://mysite.com/cheese,但我可以忍受一个丑陋的URL.重要的是参数不可见.

我应该如何改变我生成链接的方式?我查看了Wicket提供的不同URL编码策略,但没有一个删除参数; 他们只是以不同的方式展示

java url wicket url-encoding url-parameters

6
推荐指数
1
解决办法
8197
查看次数

MVC3 URL编码?

ASP.NET MVC3/Razor.

我发现当我创建一个动作链接时,比如说:

@Html.ActionLink(product.Title, "Detail", "Products", new { id = product.ProductID }, null)
Run Code Online (Sandbox Code Playgroud)

MVC3引擎创建我的产品链接.例如:

http://myhost/{ActionUrl}/PRODID
Run Code Online (Sandbox Code Playgroud)

但是,如果我的产品ID包含任何特殊字符,则不会对其进行URL编码.

http://myhost/{ActionUrl}/PROD/ID
Run Code Online (Sandbox Code Playgroud)

当然,这打破了我的路由.我的问题是:

  1. 我应该期望它自动url编码值吗?有没有办法设置它?
  2. 如果没有,那么编码和解码那些最简洁的方法是什么?我真的不想在每个控制器中都这样做.

谢谢!

url routing url-routing url-encoding asp.net-mvc-3

6
推荐指数
1
解决办法
7039
查看次数

在Ruby中编码URL参数,并使用php正确解码它

我想用Ruby编码一个URL参数.未编码的URL参数如下所示:

index.php?hash=tlNmgzWNFelvIH1o9ZAWFifpB3RwZOh6DCt5OdIfJCWLo9iZSRONWk1D1rEnSxUp|hi8JcsAHkznPkDFfaS1+xw==
Run Code Online (Sandbox Code Playgroud)

然后我想从PHP解码它!

我试过红宝石:

ERB::Util::url_encode(param)
Run Code Online (Sandbox Code Playgroud)

然后在Php urldecode($ param); 似乎不起作用!

php ruby ruby-on-rails url-encoding urldecode

6
推荐指数
1
解决办法
7970
查看次数

Backbone Send Post数据编码为查询字符串

我正在创建一个连接到RESTful后端的骨干应用程序.当我在模型上调用save()时,它将发布的数据作为字符串化的JSON发送:

{"firstName":"first","lastName":"last","Email":"email@gmail.com"}
Run Code Online (Sandbox Code Playgroud)

但我的服务器希望它的格式像查询字符串:

firstName=first&lastName=last&Email=email@gmail.com
Run Code Online (Sandbox Code Playgroud)

有没有办法让骨干以不同的方式发送它?

rest http-post url-encoding backbone.js

6
推荐指数
1
解决办法
8228
查看次数

Swift URL字符串编码崩溃在iOS上?

我有一个URL字符串,其末尾附加了变量,如下所示:

.../create?title=My Apartment
Run Code Online (Sandbox Code Playgroud)

我想逃避任何无效的字符(如空格),但是当我尝试这样做时,我使用以下方法在模拟器和我的设备(iOS 8.0)上崩溃:

NSLog("Item1: \(item)")
NSLog("Item2: \(item.title)")

if let scrubbed = item.title.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet()) {
    NSLog("Scrubbed: \(scrubbed)")
} else {
    NSLog("Nope!")
}
Run Code Online (Sandbox Code Playgroud)

在模拟器上看到是:

2014-09-24 16:59:19.120 MyApp[16406:171349] Item1: MyApp.PostItem
2014-09-24 16:59:19.121 MyApp[16406:171349] Item2: My Apartment
2014-09-24 16:59:19.125 MyApp[16406:171349] Scrubbed: My              0X0P+0partment
Run Code Online (Sandbox Code Playgroud)

注意那个擦洗字符串的奇怪之处.一段时间后,它崩溃抱怨一个构造不良的NSURL物体,毫不奇怪.

当我在我的设备上运行它,我EXC_BAD_ACCESSNSLog()试图打印的声明中崩溃了Scrubbed:

2014-09-24 17:04:37.378 MyApp[4346:2048259] Item1: MyApp.PostItem
2014-09-24 17:04:37.379 MyApp[4346:2048259] Item2: My Apartment

(lldb) po scrubbed

error: <EXPR>:1:1: error: non-nominal type '$__lldb_context' cannot be extended …
Run Code Online (Sandbox Code Playgroud)

url-encoding ios swift

6
推荐指数
1
解决办法
1687
查看次数

java.net.URLEncoder.encode的java.lang.NullPointerException,地址为com.sun.faces.context.UrlBuilder.addValuesToParameter

我试图使用netbeans运行jsf应用程序并在URLEncode中具有NullPointerException的这个例外.我认为Servlet的一些问题,但我不知道如何解决它来源:https://github.com/agoncal/agoncal-application-petstore-ee6

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">


    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
Run Code Online (Sandbox Code Playgroud)
java.lang.NullPointerException
        at java.net.URLEncoder.encode(URLEncoder.java:204)
        at com.sun.faces.context.UrlBuilder.addValuesToParameter(UrlBuilder.java:318)
        at com.sun.faces.context.UrlBuilder.addParameters(UrlBuilder.java:127)
        at com.sun.faces.context.ExternalContextImpl.encodeBookmarkableURL(ExternalContextImpl.java:1054)
        at com.sun.faces.application.view.MultiViewHandler.getBookmarkableURL(MultiViewHandler.java:407)
        at javax.faces.application.ViewHandlerWrapper.getBookmarkableURL(ViewHandlerWrapper.java:272)
        at org.jboss.weld.jsf.ConversationAwareViewHandler.getBookmarkableURL(ConversationAwareViewHandler.java:132)
        at com.sun.faces.renderkit.html_basic.OutcomeTargetRenderer.getEncodedTargetURL(OutcomeTargetRenderer.java:194)
        at com.sun.faces.renderkit.html_basic.OutcomeTargetLinkRenderer.renderAsActive(OutcomeTargetLinkRenderer.java:158)
        at com.sun.faces.renderkit.html_basic.OutcomeTargetLinkRenderer.encodeBegin(OutcomeTargetLinkRenderer.java:96)
        at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:864)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1854)
        at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
        at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
        at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)
        at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) …
Run Code Online (Sandbox Code Playgroud)

jsf nullpointerexception url-encoding

6
推荐指数
1
解决办法
3346
查看次数

如何防止Java 8/Tomcat 7对Response.sendRedirect上的URL路径进行URL编码

我有一个完全本地化的网站,在URL路径中有一些字符,通过该Response.sendTemporaryRedirect方法获得HTML编码:

String toReturn = /*StringEscapeUtils.unescapeHtml4(redirect)*/ redirect + "?" + URLEncoder.encode(json, "UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=UTF-8");

java.net.URI location = new java.net.URI(toReturn);
return Response.temporaryRedirect(location).build();
Run Code Online (Sandbox Code Playgroud)

重定向正在获得404,因为"%C3%B1%C3%AD"URL片段被误解了.解码,看起来像这样:ñí.

我已经尝试过URLDecoder.decode(url, 'UTF-8'),StringEscapeUtils.escapeHtml4在重定向之前没有运气.代码工作正常.

为什么javax.ws.rs.core.Response.sendTemporaryRedirectURLEncoding URL路径?

java redirect url-encoding tomcat7 java-8

6
推荐指数
1
解决办法
236
查看次数