抛出:IllegalArgumentException在Java中URI
问题描述:
我要像创建HttpPost要求:抛出:IllegalArgumentException在Java中URI
http://site/searches.json -d"search[params_attributes[origin_name]=MOW"\ -d"search[params_attributes][destination_name]=IEV"\ -d"search[params_attributes[some]=SOME"
我用手试了一下 - 工作正常。 但我有错误:
Caused by: java.lang.IllegalArgumentException: Illegal character in path at index 43: http://somesite/searches.json -d"search[params_attributes][origin_name]=KBP"...
at java.net.URI.create(URI.java:776)
at org.apache.http.client.methods.HttpPost.<init>(HttpPost.java:79)
它说,错误是在第一空间中的位置。 任何想法?
编辑:
我想:
mMethodURI = URLEncoder.encode(mMethodURI, "UTF-8");
并获得:
Caused by: java.lang.IllegalStateException: Target host must not be null, or set in parameters.
at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:572)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:292)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
答
尝试使用
URLEncoder.encode(url);
URLDecoder.decode(url);
编码和解码您的网址。
请尝试使用以下代码并确保在清单文件中设置了所有权限。
public String executeUrl(String url, Context context)
{
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse;
String result = null;
try
{
httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
if(httpEntity != null)
{
InputStream inputStream = httpEntity.getContent();
result = Parser.convertStreamToString(inputStream);
inputStream.close();
}
}
catch(UnknownHostException eUnknownHostException)
{
eUnknownHostException.printStackTrace();
result = null;
}
catch(ConnectTimeoutException eConnectTimeoutException)
{
// TODO: handle exception
}
catch(Exception exception)
{
exception.printStackTrace();
result = null;
}
return result;
}
private String convertStreamToString(InputStream ipStream)
{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(ipStream), 8192);
StringBuilder stringBuilder = new StringBuilder();
String line = null;
try
{
while((line = bufferedReader.readLine()) != null)
{
stringBuilder.append(line + "\n");
}
}
catch(IOException ioException)
{
ioException.printStackTrace();
}
finally
{
try
{
ipStream.close();
}
catch(IOException ioException)
{
ioException.printStackTrace();
}
}
return stringBuilder.toString();
}
[解决](http://stackoverflow.com/questions/4989743/android-httpclient-and-utf-8) 的问题是在意想不到的地方:) – rocknow 2012-08-10 12:06:05