包含空格的URL的HttpURLConnection

Amo*_*mos 4 java url android httpurlconnection

我有一个网址,其中一个参数包含空格字符.如果我按原样发送,使用HttpURLConnection,这个参数错误地传递.

如果我手动用%20替换空格,它正在按预期工作,所以我想知道是否有更干净的方法这样做,虽然我希望HttpURLConnection将自动执行.也许有一种我错过的方式?

在寻找这个时,我不断碰到不推荐使用的URLEncoder.Encode,除了对整个URL进行编码外,我找不到任何其他办法来做我所做的事情,包括http的://.

是否有一种干净的方法来进行更换,还是应该手动进行?

url例如:http://www.domain.com?param1 = name'last¶m2 = 2014-31-10 11:40:00 param 1包含'和param2包含空格和:但只有空格才会出问题.这就是为什么我不明白为什么HttpUrlConnection只对空间如此敏感.

谢谢

Har*_*ana 6

试试这种方式,希望这可以帮助您解决问题.

URLEncoder:所有字符除了字母('a'..'z','A'..'Z')和数字('0'...'9')和字符'.',' - ','*' ,'_'被转换为'%'前面的十六进制值.

在URLEncoder类中有两种方法:

1.encode(String url):此方法在API级别1中已弃用

String encodedUrl = URLEncoder.encode(url);
Run Code Online (Sandbox Code Playgroud)

2.encode(String url,String charsetName):使用charsetName命名的Charset对url进行编码.

String encodedUrl = URLEncoder.encode(url,"UTF-8");
Run Code Online (Sandbox Code Playgroud)

如何使用 :

String url ="http://www.domain.com";
String param1 ="?param1=";
Strinf param1value ="name'last";
String param2 ="&param2=";
Strinf param2value ="2014-31-10 11:40:00";
String encodeUrl = url +param1+ URLEncoder.encode(param1value,"UTF-8")+param2+URLEncoder.encode(param2value,"UTF-8");
Run Code Online (Sandbox Code Playgroud)


raj*_*raj 4

您可以使用

 String oldurl="http://pairdroid.com/whatsapp.php?a=rajesh saini";
 String newurl=oldurl.replaceAll(" ","%20");
 URL url = new URL(newurl);
Run Code Online (Sandbox Code Playgroud)

  • 这就是我现在所做的,我想知道 HttpURLConnection 是否有更干净的方法来自动执行此操作。 (2认同)