我试图使用以下代码执行以下链接:
class httpget{
HttpGet httpGet=null;
public void linkexecute(){
String url="http://<server>/<path>/action=send&msg=new message";
httpGet= new HttpGet(url); // line 1
....
}
at line 1 it is giving error "Illegal arguement exception"
java.lang.IllegalArgumentException: Illegal character in query at index 77: http://<server>/<path>/sms.json?action=send&msg=new message
at java.net.URI.create(URI.java:970)
at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:75)
at com.sms.login.LoginService.sendSms(LoginService.java:143)
Run Code Online (Sandbox Code Playgroud)
鉴于以下网址没有错误,"msg ="字样没有空白
String url="http://<server>/<path>/action=send&msg=newmessage";
Run Code Online (Sandbox Code Playgroud)
如何解决URL中单词间隙的问题?
Chi*_*rag 15
在这里,我给你一个功能,将从网址中删除所有无效字符.请在此函数中传递您的网址,您将获得一个带编码字符串的新网址.
public static String convertURL(String str) {
String url = null;
try{
url = new String(str.trim().replace(" ", "%20").replace("&", "%26")
.replace(",", "%2c").replace("(", "%28").replace(")", "%29")
.replace("!", "%21").replace("=", "%3D").replace("<", "%3C")
.replace(">", "%3E").replace("#", "%23").replace("$", "%24")
.replace("'", "%27").replace("*", "%2A").replace("-", "%2D")
.replace(".", "%2E").replace("/", "%2F").replace(":", "%3A")
.replace(";", "%3B").replace("?", "%3F").replace("@", "%40")
.replace("[", "%5B").replace("\\", "%5C").replace("]", "%5D")
.replace("_", "%5F").replace("`", "%60").replace("{", "%7B")
.replace("|", "%7C").replace("}", "%7D"));
}catch(Exception e){
e.printStackTrace();
}
return url;
}
Run Code Online (Sandbox Code Playgroud)
我认为问题在于URL的参数.而不是编码或替换整个URL,只需编码这样的参数:
Url: http://myHost.com/mail.do?address=New York city@&time=12$3;
right url:http://myHost.com/mail.do? + UrlEncode(address) + "&" + UrlEncode(time);
Run Code Online (Sandbox Code Playgroud)
另一个例子是:
Map<String, String> params = new HashMap<String, String>();
params.put("email", URLEncoder.encode(loginStr));
params.put("pass", URLEncoder.encode(passwStr));
Model.doAuthUser(params, userCallback);
Run Code Online (Sandbox Code Playgroud)
Model.doAuthUser喜欢以下内容:
String url = "http://myHost.com/mail.do";
if (params != null) {
url += "?";
Boolean beginAddParams = true;
for (Entry<String, String> entryParams : params.entrySet()) {
if (!beginAddParams) {
url +="&";
} else {
beginAddParams = false;
}
url += entryParams.getKey() + "=" + entryParams.getValue();
}
Run Code Online (Sandbox Code Playgroud)
并url随时随地使用.
| 归档时间: |
|
| 查看次数: |
8567 次 |
| 最近记录: |