Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查URL链接是否存在的String[]数组方法。我可以帮忙吗_Java_Android - Fatal编程技术网

Java 检查URL链接是否存在的String[]数组方法。我可以帮忙吗

Java 检查URL链接是否存在的String[]数组方法。我可以帮忙吗,java,android,Java,Android,我正在制作一个大型应用程序,我有点卡住了(实际上现在没有时间把头伸过去)。这是我的问题 我在一个基元数组(实际上它是一个字符串,所以我不确定它是否是基元数组)中的Glide上加载了一堆URL图像,但是它的String[]array={} 这些链接显示在gridview中活动的内部(不太重要)。 我想要的是检查链接是否有效。如果将数组成员踢出无效 public String[] checkingLinkValidation(String[] array) { ArrayList<St

我正在制作一个大型应用程序,我有点卡住了(实际上现在没有时间把头伸过去)。这是我的问题

我在一个基元数组(实际上它是一个字符串,所以我不确定它是否是基元数组)中的Glide上加载了一堆URL图像,但是它的
String[]array={}

这些链接显示在gridview中活动的内部(不太重要)。 我想要的是检查链接是否有效。如果将数组成员踢出无效

public String[] checkingLinkValidation(String[] array) {

   ArrayList<String> newArrayList = new ArrayList<>( );
   String[] newArray = new String[newArrayList.size( )];
   for (String s : array) {
       if (Patterns.WEB_URL.matcher( s ).matches( ) && !s.equals( "" )) {
           if(URLUtil.isValidUrl( s )){
               newArrayList.add( s );
           }
       }

       /**
        * Nastaviti raditi na ovome. moram izbaciti link koji ne valja
        */
   try{
           HttpURLConnection httpURLConnection = (HttpURLConnection) new URL( s ).openConnection();
           httpURLConnection.setRequestMethod( "HEAD" );
           httpURLConnection.setConnectTimeout( 2000 );
           httpURLConnection.setReadTimeout( 2000 );

           if(httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK){
               newArrayList.add( s );
           }
       }catch (Exception e){
           Log.d( "HTTPURLConnection check if exists", "Error type: "+e.getMessage() );
       }


       newArray = newArrayList.toArray( newArray );


   }

   return newArray;  }
public String[]checkingLinkValidation(String[]数组){
ArrayList newArrayList=newArrayList();
String[]newArray=newstring[newArrayList.size()];
for(字符串s:数组){
if(Patterns.WEB_URL.matcher.matches()&&&!s.equals(“”)){
如果(URLUtil.isValidUrl){
newArrayList.add(s);
}
}
/**
*Nastaviti raditi na ovome.moram izbaciti link koji ne valja
*/
试一试{
HttpURLConnection HttpURLConnection=(HttpURLConnection)新URL.openConnection();
httpURLConnection.setRequestMethod(“HEAD”);
httpURLConnection.setConnectTimeout(2000);
httpURLConnection.setReadTimeout(2000);
if(httpURLConnection.getResponseCode()==httpURLConnection.HTTP\u确定){
newArrayList.add(s);
}
}捕获(例外e){
Log.d(“HTTPURLConnection检查是否存在”,“错误类型:+e.getMessage());
}
newArray=newArrayList.toArray(newArray);
}
返回newArray;}
问题是,程序无法访问这些链接。我得到
exception.getMessage()
->

01-29 18:44:17.799 5705-5705/com.mario.restaurantcroatia I/System.out:(HTTPLog)-静态:ISSBsettingabled false

x20,因为有20个链接。可能的线索是,所有这些链接都作为字符串加载到一个数组中,并通过SharedReferences。 还值得一提的是,如果不使用这种方法,链接就可以正常工作,它们直接进入数组。所有的照片都很好。我的目标是踢出一段时间后过期的链接

希望我说清楚。有人知道为什么链接不能通过这个方法吗

我想要的是检查链接是否有效。如果将数组成员踢出无效

public String[] checkingLinkValidation(String[] array) {

   ArrayList<String> newArrayList = new ArrayList<>( );
   String[] newArray = new String[newArrayList.size( )];
   for (String s : array) {
       if (Patterns.WEB_URL.matcher( s ).matches( ) && !s.equals( "" )) {
           if(URLUtil.isValidUrl( s )){
               newArrayList.add( s );
           }
       }

       /**
        * Nastaviti raditi na ovome. moram izbaciti link koji ne valja
        */
   try{
           HttpURLConnection httpURLConnection = (HttpURLConnection) new URL( s ).openConnection();
           httpURLConnection.setRequestMethod( "HEAD" );
           httpURLConnection.setConnectTimeout( 2000 );
           httpURLConnection.setReadTimeout( 2000 );

           if(httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK){
               newArrayList.add( s );
           }
       }catch (Exception e){
           Log.d( "HTTPURLConnection check if exists", "Error type: "+e.getMessage() );
       }


       newArray = newArrayList.toArray( newArray );


   }

   return newArray;  }
如果我正确理解您的问题,作为一种简单的方法,您可以使用InetAddress类

boolean reachable = InetAddress.isReachable();
遍历数组,然后执行适当的操作,如果地址没有响应,则从数组中删除URL


我已经解决了这个问题

public String[] checkingLinkValidation(String[] array)  {

   ArrayList<String> newArrayList = new ArrayList<>( );
   String[] newArray = new String[newArrayList.size( )];
   for (String s : array) {
        if(URLUtil.isValidUrl( s )){

            newArrayList.add( s );
        }

       newArray = newArrayList.toArray( newArray );
   }

   return newArray;  }
public String[]checkingLinkValidation(String[]数组){
ArrayList newArrayList=newArrayList();
String[]newArray=newstring[newArrayList.size()];
for(字符串s:数组){
如果(URLUtil.isValidUrl){
newArrayList.add(s);
}
newArray=newArrayList.toArray(newArray);
}
返回newArray;}

仅供参考,因为您在问题中提到了它……字符串不是原语。它们是不可变的对象。我记得Tim BUtchalka教授字符串是实际的类。我不确定,但我记得他们和原始人不同。我已经解决了我的问题。if(URLUtil.isvalidull(s)){newArrayList.add(s);