2012-12-19 14 views
8

Bir sıcaklık veri kümesi içeren bir NOAA web sitesinin URL'sini belirten bir özellik içeren bir özellik dosyası var. Özellik, NOAA yeni bir tahmin oluşturduğunda URL her gün değiştiği için [DATE_REPLACE] belirtecini içerir. Benim özelliklerindeÜstesinden gelme java.net.MalformedURLException: iletişim kuralı yok Exception

dosyası, ben belirterek ediyorum:

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

Ben WEATHER_DATA_URL kullanarak mevcut gün için URL Dize oluşturmak için bir PropertyHelper sınıfını (java.util.Properties için bir sarıcı) withing bir yöntem ilan ettiler tarih biçimindeki "yyyyMMdd" adıyla bugünün Tarihi.

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(); 
} 
Sonra web sayfasından metni okumak için aşağıdaki yöntemiyle başka yardımcı sınıf çağrı

:

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; 
    } 
} 

ben oluşturulan URL dize boşlukları kesmek için çalıştık görebileceğiniz gibi Bu soruna neden olduğunu umuyor. URL dizesi düzgün oluşturulur ancak şu istisna alıyorum: Ben elle dize ayarlarsanız

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

, her şey çalışıyor ... ne eksik?

cevap

15

Mülk dosyanızda URL'nin değeri etrafında çift tırnak işareti vardır. Bunları kaldırın.

+1

Çok teşekkür ederim ** erickson **. Çaylak hatası için özür dilerim. – msomarr

+7

Herkesin bazen yeni bir göze ihtiyacı vardır. – erickson

İlgili konular