2012-08-09 82 views
0

我要像创建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) 
+0

[解决](http://stackoverflow.com/questions/4989743/android-httpclient-and-utf-8) 的问题是在意想不到的地方:) – rocknow 2012-08-10 12:06:05

回答

0

尝试使用

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(); 
} 
+0

如何U [R制作的要求吗?邮政编码 – Braj 2012-08-09 11:34:10

+0

HttpPost request = new HttpPost(mMethodURI); HttpResponse response = mHttpClient.execute(request); 错误在第一行 – rocknow 2012-08-09 11:39:25

+0

我已编辑我的帖子。希望能帮助到你。 – Braj 2012-08-09 11:45:59

相关问题