我正在尝试创建一个像这样工作的url字符串:
/app/process/example.com/index.html
Run Code Online (Sandbox Code Playgroud)
换句话说,
/app/process/$URL
Run Code Online (Sandbox Code Playgroud)
我然后检索网址
$this->uri->segment(3);
Run Code Online (Sandbox Code Playgroud)
URL中的正斜杠当然是访问uri段的问题,所以我将继续并对url编码URL部分:
/app/process/example.com%2Findex.html
Run Code Online (Sandbox Code Playgroud)
..但现在我得到一个404说...
Not Found
The requested URL /app/process/example.com/index.html was not found on this server.
Run Code Online (Sandbox Code Playgroud)
似乎我的正斜杠的url编码打破了CI的URI解析器.
我该怎么做才能解决这个问题?
我正在访问一个URL,该URL将我重定向到包含空格的URL.(使用HttpClient 4.x)如何防止此错误(用%20替换空格而不是+)
08-06 02:45:56.486: WARN/System.err(655): org.apache.http.client.ClientProtocolException
08-06 02:45:56.493: WARN/System.err(655): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:557)
08-06 02:45:56.534: WARN/System.err(655): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509)
08-06 02:45:56.603: WARN/System.err(655): at com.romcessed.romsearch.searchproviders.DopeRomsConnector$DownloadROMTask.doInBackground(DopeRomsConnector.java:636)
08-06 02:45:56.623: WARN/System.err(655): at com.romcessed.romsearch.searchproviders.DopeRomsConnector$DownloadROMTask.doInBackground(DopeRomsConnector.java:1)
08-06 02:45:56.643: WARN/System.err(655): at android.os.AsyncTask$2.call(AsyncTask.java:185)
08-06 02:45:56.663: WARN/System.err(655): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-06 02:45:56.683: WARN/System.err(655): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-06 02:45:56.693: WARN/System.err(655): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
08-06 02:45:56.713: WARN/System.err(655): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
08-06 02:45:56.713: WARN/System.err(655): at java.lang.Thread.run(Thread.java:1096)
08-06 02:45:56.743: WARN/System.err(655): Caused by: org.apache.http.ProtocolException: Invalid redirect URI: http://somewebsite.com/some file with spaces.zip
08-06 02:45:56.787: WARN/System.err(655): at org.apache.http.impl.client.DefaultRedirectHandler.getLocationURI(DefaultRedirectHandler.java:116)
08-06 02:45:56.803: WARN/System.err(655): at org.apache.http.impl.client.DefaultRequestDirector.handleResponse(DefaultRequestDirector.java:892)
08-06 …Run Code Online (Sandbox Code Playgroud) 我有一个已经采用正确的URLEncoded Form格式的字符串,并希望通过Android上的POST请求将其发送到PHP服务器.我知道在Android上发送URL编码表单的方法使用了UrlEncodedFormEntity,我知道如何使用它.但问题是,数据进入已经URL编码,并通过&符号加入的功能,所以使用UrlEncodedFormEntity会涉及到很多额外的工作,把它变成一个List的NameValuePairs,我宁愿不要.
那么,如何发送一个正确的POST请求发送此字符串作为内容正文?
我已经尝试过使用StringEntity,但是PHP服务器没有获得任何数据(空$_POST对象).
我正在测试针对http://test.lifewanted.com/echo.json.php这简直是
<?php echo json_encode( $_REQUEST );
Run Code Online (Sandbox Code Playgroud)
以下是已编码数据的示例:
partnerUserID =电子邮件%40example.com&partnerUserSecret =输入mypassword&命令=身份验证
只是说我有以下url,它有一个查询字符串参数,它是一个url:
http://www.someSite.com?next=http://www.anotherSite.com?test=1&test=2
我应该对next参数进行url编码吗?如果我这样做,谁负责解码它 - 网络浏览器,或我的网络应用程序?
我问的原因是我看到很多大型网站都做了以下事情
http://www.someSite.com?next=http://www.anotherSite.com/another/url
在上面,他们不打扰next参数编码,因为我猜测,他们知道它本身没有任何查询字符串参数.如果我的next网址不包含任何查询字符串参数,这可以吗?
我正在尝试对字符串进行URL编码以形成来自objective-c的GET请求.
NSString *params = @"'Decoded data!'/foo.bar:baz";
NSRunAlertPanel( @"Error", [params urlEncoded], @"OK", nil, nil );
Run Code Online (Sandbox Code Playgroud)
这是扩展NSString的类别
-(NSString *) urlEncoded
{
NSString *encoded = (NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef)self,
NULL,
(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
kCFStringEncodingUTF8 );
return encoded;
}
Run Code Online (Sandbox Code Playgroud)
所以第一次运行它我就回来了
1606410046ecoded 1606410784ata2270.000000foo.bar0X1.001716P-1042baz
Run Code Online (Sandbox Code Playgroud)
从对话框中.
我再次运行后立即得到了这个
1606410046ecoded 1606410944ata227369374562920703448982951250259562309742470533728899744288431318481119278377104028261651081181287077973859930826299575521579020410425419424562236383226511593137467590082636817579938932512039895040.000000foo.bar0X1.66E6156303225P+771baz
Run Code Online (Sandbox Code Playgroud)
然后,如果我再次运行它,它会回到第一个.这真的很奇怪.
如果params设置为@"&"或@"",我只需在对话框中找回"2"(不带引号).
还有一种方法可以在警告对话框中显示%符号吗?
谢谢
我有一个表格method="get".在表单中,我需要传递CSS文件的URL,但它将其编码为http%3A%2F%2Fwww...等.
有没有办法停止URL的编码,因为它打破了文件.
谢谢
我有一个相当典型的REST API,除了资源的id不是整数,而是字符串,通常包含/字符.因此,如果客户的ID是string/with/slashes该客户的URI应该是http://localhost/customers/string%2Fwith%2Fslashes.返回客户列表时,我想用UriBuilder构造URI,这样我就可以把它放在ATOM风格的链接元素的href中.但它不太有效; 这是一个小测试类,显示我的意思:
@Path("/customers")
public class JerseyTest {
@Path("{id}")
public Customer getCustomer(@PathParam("{id}") String id) {
return null;
}
public static void main(String[] args) {
buildURI("string#with#hashes"); // => http://localhost/customers/string%23with%23hashes
buildURI("string/with/slashes"); // => http://localhost/customers/string/with/slashes
}
public static void buildURI(String id) {
UriBuilder builder = UriBuilder.fromUri("http://localhost");
builder.path(JerseyTest.class).path(JerseyTest.class, "getCustomer");
URI uri = builder.build(id);
System.out.println(uri);
}
}
Run Code Online (Sandbox Code Playgroud)
该#太棒了,我们编码为我所期望的,但/我们做不.我尝试使用builder.build(URLEncoder.encode(id)),但随后UriBuilder编码了%,所以你得到了.../string%252Fwith%252Fslashes!
在我看来,不一致的,它编码#和%而不是/,但我怀疑是有很好的理由对此我没有看到.所以我的问题是:
.../string%2Fwith%2Fslashes …我有一个看起来像这样的URL(注意""符号):
http://tinklarastis.omnitel.lt/kokius-aptarnavimo-kanalus-klientui-siulo-„omnitel“-1494
我从SimplePie解析器接收它,如果这很重要.现在,如果您尝试在浏览器中访问此特定URL并从地址栏复制它,您将获得一个具有非ASCII符号百分比编码的URL :
http://tinklarastis.omnitel.lt/kokius-aptarnavimo-kanalus-klientui-siulo-%E2%80%9Eomnitel%E2%80%9C-1494
我试图了解如何在PHP中模仿相同的转换.我不能简单地使用urlencode()或urlrawencode()编码非ASCII符号和保留符号,而在我的情况下,保留符号(/?&等)应保持原样.
到目前为止,我只看到了将URL拆分为保留符号之间然后使用的解决方案urlencode(),但这对我来说感觉很乱,我希望有更优雅的解决方案.我已经试过的各种变化iconv(),mb_convert_encoding(),但没有成功呢.
我需要编码的URL在其中一个API中进行处理,但它需要完整的编码URL.例如,来自的URL:
http://test.site-raj.co/999999?lpp=1&px2=IjN
Run Code Online (Sandbox Code Playgroud)
必须成为编码的URL,如:
http%3a%2f%test%site%2draj%2eco%2f999999%3flpp%3d1%26px2%3dIjN
Run Code Online (Sandbox Code Playgroud)
我需要对每个符号进行编码,甚至像上面的点(.)和连字符( - )一样.
我试图HttpUtility.UrlEncode在我的VB.NET项目中调用静态,但是IDE没有认识到该类没有声明它.
我已经导入了名称空间System.Net和System.Web项目.
我还在文件的顶部有以下内容:
Imports System.Net
Imports System.Web
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?