2012-12-19 8 views
8

温度データセットを含むNOAA WebサイトのURLを指定するプロパティを含むプロパティファイルがあります。 NOAAが新しい予測を生成すると、URLは毎日変更されるため、このプロパティには[DATE_REPLACE]トークンが含まれます。私のプロパティで克服java.net.MalformedURLException:プロトコルなし例外

はファイル、私は指定しています:

WEATHER_DATA_URL="http://weather.noaa.gov/pub/SL.us008001/DF.anf/DC.mos/DS.mex/RD.[DATE_REPLACE]/cy.00.txt" 

私はWEATHER_DATA_URLを使用して、現在の日のためのURL文字列を生成するPropertyHelperクラス(java.util.Propertiesのラッパー)をwithingメソッドを宣言しています名前として "yyyyMMdd"を日付形式として、今日の日付。あなたは私が生成されたURL文字列からスペースをトリミングしようとしている見ることができるように

public static List<String> readLinesFromWebPage(String urlText) throws Exception 
{ 
    List<String> lines = new ArrayList<String>(); 
    if (StringHelper.isNullOrWhitespace(urlText)) 
    { 
     throw new NullPointerException("URL text cannot be null or empty"); 
    } 

    BufferedReader dataReader = null; 
    try 
    { 
     System.out.println("URL = " + urlText); 
     String trimmedUrlText = urlText.replaceAll("\\s", ""); 

     URL url = new URL(trimmedUrlText); 
     dataReader = new BufferedReader(new InputStreamReader(url.openStream())); 

     String inputLine; 
     while((inputLine = dataReader.readLine()) != null) 
     { 
      lines.add(inputLine); 
     } 

     return lines; 
    } 
    catch(Exception e) 
    { 
     logger.logThrow(Level.SEVERE, e, "Exception (" + e.getMessage() + ") attempting to " + 
       "read data from URL (" + urlText + ")"); 
     throw e; 
    } 
} 

public String getPropertyWithDateReplaceToken(String name, String dateFormat, Date dateToFormat) 
{ 
    String value = this.properties.getProperty(name); 

    if (StringHelper.isNullOrWhitespace(value) || !value.contains("[DATE_REPLACE]")) 
    { 
     throw new UnsupportedOperationException("The property value should specify the [DATE_REPLACE] token"); 
    } 

    StringBuilder sb = new StringBuilder(value); 
    int index = sb.indexOf("[DATE_REPLACE]"); 
    while (index != -1) 
    { 
     String replacement = StringHelper.getTodayAsDateString(dateFormat, dateToFormat); 
     sb.replace(index, index + "[DATE_REPLACE]".length(), replacement); 
     index += replacement.length(); 
     index = sb.indexOf(value, index); 
    } 

    return sb.toString(); 
} 

私は、Webページからテキストを読み取るために、以下の方法で別のヘルパークラスを呼び出しますその問題を引き起こしていたと考えています。 URL文字列が正しく生成されますが、私は次の例外になっています:私は手動で文字列を設定した場合

java.net.MalformedURLException: no protocol: "http://weather.noaa.gov/pub/SL.us008001/DF.anf/DC.mos/DS.mex/RD.20121219/cy.00.txt" 

、すべての作品...私は何をしないのですか?

答えて

15

プロパティファイルには、URLの値を二重引用符で囲みます。これらを削除します。

+1

ありがとうございます**エリクソン**。新人ミスのために申し訳ありません。 – msomarr

+7

誰もが時々新しい目を必要とします。 – erickson

関連する問題