我有一个安静的Web服务,它接收一些结构化数据,直接放入数据库.
使用wget从OS发送数据.我只是想知道我是否真的需要URL编码数据,如果是这样,为什么?请注意,这样做没有问题,但在这种情况下可能是不必要的.
我正在尝试解析@在用户名和密码中包含一些特殊字符的 FTP URL :
username:p@sswrd@ftp.myhost.com/mypath
Run Code Online (Sandbox Code Playgroud)
当我尝试:
URI.parse(url)
Run Code Online (Sandbox Code Playgroud)
我得到:
URI::InvalidURIError: the scheme ftp does not accept registry part: username:p@sswrd@ftp.myhost.com (or bad hostname?)
然后,我尝试对 url 进行编码:
url = URI.encode(url, '@')
Run Code Online (Sandbox Code Playgroud)
但也有另一个错误:
URI::InvalidURIError: the scheme ftp does not accept registry part: username:p%40sswrd%40ftp.myhost.com (or bad hostname?)
最后,我尝试了另一种解决方案:
URI::FTP.build(:userinfo => 'username:p@sswrd', :host=>'ftp.myhost.com', :path => '/mypath')
Run Code Online (Sandbox Code Playgroud)
但我也遇到了一个错误:
URI::InvalidComponentError: 坏组件(预期的用户组件):p@ssword
我正在使用 ruby 1.8.7。
我使用 GET 方法将变量传递给 url,如下所示
http://www.mysite.com/demo.php?sid=123121&email_id=stevemartin144%40gmail.com
Run Code Online (Sandbox Code Playgroud)
当我在 demo.php 上打印 $_GET 时,它显示参数如下:
email_id stevemartin144@gmail.com
sid 123121
Run Code Online (Sandbox Code Playgroud)
我想要的不是上面的输出,而是我传递的参数
email_id stevemartin144%40gmail.com
sid 123121
Run Code Online (Sandbox Code Playgroud)
我不想将 %40 转换为 @
请建议我解决这个问题
提前致谢
我正在使用Scala的Dispatch如下:
val body = """{"count":5,"requeue":true,"encoding":"auto","truncate":50000}"""
val req = url("http://localhost:4567/api/queues/%2f/myQueue/get").as_!("guest", "guest") << (body, "application/json")
val http = new Http
val resp = http(req as_str)
Run Code Online (Sandbox Code Playgroud)
在%2f被变成了/,所以它会试图张贴到/api/queues///myQueue/get而不是/api/queues/%2f/myQueue/get.
我该如何妥善逃脱?
我想访问带有HTTP GET查询字符串的Web资源,例如:
http://stackoverflow.com/search?q=search%20example&tab=relevance
Run Code Online (Sandbox Code Playgroud)
在常规.NET Framework 4.5应用程序中,您可以使用System.Net.WebClient.QueryString:
备注
QueryString属性包含NameValueCollection实例,该实例包含作为查询字符串附加到URI的名称/值对.QueryString属性的内容前面有一个问号(?),名称/值对用一个与号(&)分开.
对于Store Apps,您甚至可以使用Windows.Foundation.WwwFormUrlDecoder解析它们.
但是为了创建查询字符串,我在MSDN中找到的最佳代码段是:
UriBuilder baseUri = new UriBuilder("http://www.contoso.com/default.aspx?Param1=7890");
string queryToAppend = "param2=1234";
if (baseUri.Query != null && baseUri.Query.Length > 1)
baseUri.Query = baseUri.Query.Substring(1) + "&" + queryToAppend;
else
baseUri.Query = queryToAppend;
Run Code Online (Sandbox Code Playgroud)
(来自:http://msdn.microsoft.com/en-us/library/system.uribuilder.query(v = vs.110).aspx)
微软真的暗示我应该用"="和"&"自己加入我的参数吗?有没有更好的方法?
我正在尝试发送一个来自包含null值的对象的请求:
ajax_post("path", {name: "Name", status: null}, callback);
Run Code Online (Sandbox Code Playgroud)
我有自己的URL编码对象的方法.null是一个javascript类型object,所以它最终在这里:
for(var i in data) {
...
if(typeof data[i]=="object") {
if(data[i]==null) {
//HOW TO ENCODE THE NULL VALUE?
}
else
...
}
else
...
}
Run Code Online (Sandbox Code Playgroud)
生成$_POST的服务器端应包含以下内容:
array(
name => "Name",
status => NULL
)
Run Code Online (Sandbox Code Playgroud)
这是可能的,或者我将不得不转换"NULL"到NULL手动服务器端?
以下所有内容均位于 PayPal 沙箱中:
\n\n我有一个 PayPal 订阅/定期付款设置,它使用 IPN 侦听器作为在我的网站数据库中创建或更新用户订阅的最后一步。但是,当我收到来自 paypal 的 POST 数据并将其发回进行验证时,我收到的唯一响应是“无效”。
\n\n我知道我的代码正确地将 POST 数据发送回 PayPal,因为当我通过使用 PayPal\ 上看到的“IPN Message”值硬编码 POST 数据字符串来模仿正确的 POST 到监听器时,我会得到“VERIFIED”响应的 IPN 历史页面。
\n\n因此,我将 POST 数据发送回 PayPal 进行最终验证的代码有效,并且我的 IPN 侦听器正在接收交易的 POST 变量。我的 IPN 侦听器创建的发送回 PayPal 的 POST 数据字符串与 PayPal 期望接收的 POST 数据字符串之间存在差异。
\n\nPayPal 规定,IPN 侦听器必须发回其收到的 POST 数据,其值、顺序和编码与 PayPal 发送的数据相同。
\n\n我认为问题是编码问题,因为在 PayPal POST 中,“charset”的值为“windows-1252”,应该是“UTF-8”。但是,“form_charset”的正确值是“UTF-8”。
\n\n我已将卖家 PayPal 个人资料上的两个输入字段的编码设置为 UTF-8,并在初始 PayPal 表单/按钮中隐藏了一个名为“charset”和值“UTF-8”的输入。请告诉我是否有其他方法来设置我错过的编码。
\n\nPayPal 声称要发送的 POST 数据字符串的一部分包括“¬ify_version=3.8”,后跟更多变量。当我手动插入此字符串来测试我的代码时,“¬”在打印到页面时会转换为“\xc2\xac”,据我了解,这意味着正在使用的字符编码是“windows-1252”,因为“\xc2” \xac" 属于 windows-1252 字符集,但 "\xc2\xac" 不属于 UTF-8 字符集,因此如果使用 …
我正在根据 JavaScript 中的RFC4648寻找 base64url 的(快速)标准实现。
到目前为止我想出了:
var base64url = window.btoa(url).replace(/\//g, '_').replace(/\+/g, '-').replace(/=/g, '');
Run Code Online (Sandbox Code Playgroud)
有什么更快的吗?
例如,我经常看到这个 URL 出现。
https://ghbtns.com/github-btn.html?user=example&repo=card&type=watch&count=true
Run Code Online (Sandbox Code Playgroud)
是&意味着&还是应该/可以将其保留为&?
前段时间我看到一个网站,将游戏重播数据编码为unicode字符,以便您可以复制并粘贴地址与朋友分享。我基本上想做同样的事情——我在 JavaScript 对象中有一些数据,我想把它放到地址栏中。
我知道我可以使用jQuery.param或类似的东西,但我想要一个更紧凑的格式。
事实证明,这对谷歌来说有点棘手。大多数搜索结果都会出现 URL 缩短器,这明显不同。我不想在我的数据库中存储一个简短的 URL 以供以后查找。所有数据都应该在 URL 本身中。
我可以为此使用什么编码?算法的链接或描述很好,但 Node/JavaScript 的实现会更好。
我只需要支持最新版本的 Chrome stable,所以我不在乎旧浏览器是否无法处理 unicode。我想我会将数据放在片段部分(之后#),所以我只需要支持适用于该片段的任何编码规则。我认为几乎任何事情都是允许的,不是吗?