%在url http请求java中

%在url http请求java中,java,android,Java,Android,我试图用java执行http请求,但出现以下错误: java.lang.IllegalArgumentException:索引80处的查询中的%sequence:%Ne无效: try { HttpClient Client = new DefaultHttpClient(); String URL = "Example.com"; HttpGet httpget = new HttpGet(URL); ResponseHandler<String&g

我试图用java执行http请求,但出现以下错误:

java.lang.IllegalArgumentException:索引80处的查询中的%sequence:%Ne无效:

try {
     HttpClient Client = new DefaultHttpClient();
     String URL = "Example.com";
     HttpGet httpget = new HttpGet(URL);
     ResponseHandler<String> responseHandler = new BasicResponseHandler();
     String SetServerString = Client.execute(httpget, responseHandler);
     Log.e("iets",SetServerString);

} 
catch (ClientProtocolException e) {
     e.printStackTrace();
} 
catch (IOException e) {
     e.printStackTrace();
}
试试看{
HttpClient=new DefaultHttpClient();
字符串URL=“Example.com”;
HttpGet HttpGet=新的HttpGet(URL);
ResponseHandler ResponseHandler=新BasicResponseHandler();
String SetServerString=Client.execute(httpget,responseHandler);
Log.e(“iets”,SetServerString);
} 
捕获(客户端协议例外e){
e、 printStackTrace();
} 
捕获(IOE异常){
e、 printStackTrace();
}
我似乎无法在查询中使用字符“%”。但问题是,我确实需要使用“%”,因为它表示echonest.php中的一个空间

我怎样才能解决这个问题


提前感谢

您应该使用


%用于对URL中的特殊字符进行编码。要对实际的“%”字符进行编码,需要使用%25 url将变为:


有现成的库来编码URL。它将有助于避免其他奇怪的符号,如空格、斜杠等。

因为您在
URL
中使用了特殊字符,所以您应该使用
urlcoder.encode()方法

例如:-
stringurl=”http://bertenbevers.be/ProjectICT4/echonest.php?“+URLEncoder.encode”(“title=stormwatch&artist=Helvetic%Nerds”)


希望这有助于您解决问题

像这样使用URLEncoder:

String URL = "www.example.com"?title=stormwatch&artist=Helvetic"+URLEncoder.encode("%","UTF-8")+"Nerds";
修改您的代码:

try {
                HttpClient Client = new DefaultHttpClient();
                String URL = "www.example.com/?title=stormwatch&artist=Helvetic"+URLEncoder.encode("%","UTF-8")+"Nerds";
                HttpGet httpget = new HttpGet(URL);
                ResponseHandler<String> responseHandler = new BasicResponseHandler();
                String SetServerString = Client.execute(httpget, responseHandler);
                Log.e("iets",SetServerString);

            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
试试看{
HttpClient=new DefaultHttpClient();
String URL=“www.example.com/?title=stormwatch&artist=Helvetic”+URLEncoder.encode(“%”,“UTF-8”)+“Nerds”;
HttpGet HttpGet=新的HttpGet(URL);
ResponseHandler ResponseHandler=新BasicResponseHandler();
String SetServerString=Client.execute(httpget,responseHandler);
Log.e(“iets”,SetServerString);
}捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}

在查询中将空间写入器设置为%20。是否尝试对url进行编码?编码(URL,“utf-8”);您可能想要使用URI模板;我碰巧是这样想的,但其他人也存在。特别是,如果你使用番石榴,它有
Escaper
s。为什么要投反对票,陌生人?没有投反对票,但你编码太多了,比如
=
&
。许多其他答案都有同样的问题。@laalto谢谢!编辑!:)<代码>+“书呆子”
-你忘了把它放在双引号下。是的,编辑过!谢谢@ComputerFellow:)
try {
                HttpClient Client = new DefaultHttpClient();
                String URL = "www.example.com/?title=stormwatch&artist=Helvetic"+URLEncoder.encode("%","UTF-8")+"Nerds";
                HttpGet httpget = new HttpGet(URL);
                ResponseHandler<String> responseHandler = new BasicResponseHandler();
                String SetServerString = Client.execute(httpget, responseHandler);
                Log.e("iets",SetServerString);

            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }