Java 非法参数http主机
挣扎于一段简单的代码(但我是个新手) 我想停止for循环发送除IP地址之外的任何内容(即空白)Java 非法参数http主机,java,jsp,Java,Jsp,挣扎于一段简单的代码(但我是个新手) 我想停止for循环发送除IP地址之外的任何内容(即空白) 感谢您的好意。如果后面有逗号,请去掉它 String sanitizedIpAddr = ""; String ipaddrlist = request.getParameter("ipaddrlist"); System.out.println (ipaddrlist); ReaderDriver art = new ReaderDriver(); if(ipaddrlist.charAt(ip
感谢您的好意。如果后面有逗号,请去掉它
String sanitizedIpAddr = "";
String ipaddrlist = request.getParameter("ipaddrlist");
System.out.println (ipaddrlist);
ReaderDriver art = new ReaderDriver();
if(ipaddrlist.charAt(ipaddrlist.length()-1) == ','){
sanitizedIpAddr = ipaddrlist.substring(0, ipaddrlist.length()-2);
}
String ipaddrs[] = sanitizedIpAddr.split(",");
System.out.println (Arrays.toString(ipaddrs));
for(int i=0; i< ipaddrs.length ; i++)
{
art.setOutputs(ipaddrs[i], false);
}
字符串sanitizedIpAddr=”“;
字符串ipaddrlist=request.getParameter(“ipaddrlist”);
System.out.println(IPAddressList);
ReaderDriver艺术=新的ReaderDriver();
if(ipaddrlist.charAt(ipaddrlist.length()-1)=','){
sanitizedIpAddr=ipaddrlist.substring(0,ipaddrlist.length()-2);
}
字符串ipaddrs[]=sanitizedIpAddr.split(“,”);
System.out.println(Arrays.toString(ipaddrs));
对于(int i=0;i
然后继续使用常规代码。问题是,当ipaddress的值为空时,代码将创建无效的URL
http:///UE/rci //Invalid URL if ip address is blank
http://192.168.150.210/UE/rci //Valid URL
我假设您正在使用此URL创建类似以下内容的连接
URL myURL = new URL(url);
URLConnection myURLConnection = myURL.openConnection();
myURLConnection.connect();
您需要在打开连接之前验证URL
String url = (new StringBuilder()).append("http://").append(ipaddrs[i]).append("/UE/rci").toString();
String[] schemes = {"http","https"}; // DEFAULT schemes = "http", "https", "ftp"
UrlValidator urlValidator = new UrlValidator(schemes);
if (urlValidator.isValid(url))
{
System.out.println("URL is valid..Continue processing");
try {
URL myURL = new URL(url);
URLConnection myURLConnection = myURL.openConnection();
myURLConnection.connect();
}
catch (MalformedURLException e) {
e.printStackTrace();
// new URL() failed
// ...
}
catch (Exception e) {
e.printStackTrace();
}
} else {
System.out.println("URL is invalid");
}
类是Apache commons验证程序jar的一部分,可以从
有两个UrlValidator类。使用org.apache.commons.validator.routines.urlvidator,因为另一个已弃用
您还可以添加一个签入for循环,而不是UrlValidator
for(int i=0; i< ipaddrs.length ; i++)
{
if(ipaddrs[i] !=null && !"".equals(ipaddrs[i].trim()))
{
art.setOutputs(ipaddrs[i], false);
}
}
for(int i=0;i
只需在代码中执行简单的验证:
for(int i=0; i< ipaddrs.length ; i++)
{
// Or you can validate by your way(for exp: checking url ), here is checking null or empty
if (ipaddrs[i] != null && !ipaddrs[i].isEmpty())
art.setOutputs(ipaddrs[i], false);
}
for(int i=0;i
您还可以为ReaderDriver类粘贴代码。根据这段代码,我们将无法确定setOutputs API在做什么。代码的其余部分看起来不错。如果逗号前没有值,则它将被视为空白。更新了原始代码,但请参见注释。谢谢Eduardo,但我现在似乎有两个字符串数组要放入for循环中(ipaddrlist和SanitizedIPAddressr),不知道如何执行此操作,您能否在其中添加内容来复制我的原始代码(如您所见,这是一个新手)@只需用新的消毒设备更换所有设备。你要做的就是删除结尾的逗号(如果有)。这应该可以修复空指针异常,但这会破坏(int i=0;ifor(int i=0; i< ipaddrs.length ; i++)
{
if(ipaddrs[i] !=null && !"".equals(ipaddrs[i].trim()))
{
art.setOutputs(ipaddrs[i], false);
}
}
for(int i=0; i< ipaddrs.length ; i++)
{
// Or you can validate by your way(for exp: checking url ), here is checking null or empty
if (ipaddrs[i] != null && !ipaddrs[i].isEmpty())
art.setOutputs(ipaddrs[i], false);
}