非法参数异常:主机名不能为空

时间:2015-08-29 08:09:40

标签: illegalargumentexception

  

非法参数例外:主机名可能不为空

我在最后一行收到此错误

HttpResponse httpResponse = httpClient.execute(get) 

我尝试了所有可能的解决方案,例如编码url,如果包含空格等等。而名称和手机等变量都来自我的调用类

Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
String time = sdf.format(cal.getTime());
String value="Dish:"+cr.getString(1)+"Quantity:"+cr.getInt(2)+"Price"+cr.getString(3).trim()+"TotalPrice:"+Integer.parseInt(cr.getString(3))*cr.getInt(2)+"Address:"+address+"CustomerName:"+name+"RestaurantName:"+cr.getString(4).trim();
url = "http:twowaits.in/orderapp.php?name="+name.trim()+"&no="+phone.trim()+"&add="+URLEncoder.encode(address, "UTF-8")+"&rest="+URLEncoder.encode(cr.getString(4),"UTF-8")+"&cost="+cr.getString(3).trim()+"&value="+URLEncoder.encode(value, "UTF-8")+"&dishname="+cr.getString(1).trim()+"&qty="+cr.getInt(2)+"&time="+time;
HttpGet get = new HttpGet(url);
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse httpResponse = httpClient.execute(get);     

1 个答案:

答案 0 :(得分:0)

您忘记了//之后的http:

url = "http://twowaits.in/......

堆栈跟踪说明了一切;您的URL不包含主机名(域名或IP)。这意味着您要么没有提供,要么在某处产生了格式错误,因此无法正确解析URL。在这种情况下,您确实提供了域名,只是网址格式不正确。

请注意,您使用的Apache HttpClient已弃用,Google建议您切换到其他内容,例如: URLConnectionSquare's OKHttp也是一个很好的选择。

此外,您可能希望尝试使代码更具可读性。使用URI的构建器模式可能会有很大帮助。请参阅URIBuilder,或者您只需使用StringBuilder