2013-06-17 4 views
-1
java.net.MalformedURLException: no protocol: "localhost/uatpw/ActiveTransaction"?isx=E13F42EC5E38 
    at java.net.URL.<init>(URL.java:567) 
    at java.net.URL.<init>(URL.java:464) 
    at java.net.URL.<init>(URL.java:413) 

localhost가 포함 된 URL에서 데이터를 읽을 때 잘못된 URL 예외가 발생합니다.잘못된 URL 형식의 프로토콜 오류가 발생했습니다.

사실 내 프로그램은

package bll.sap; 

import java.net.MalformedURLException; 

import utility.PropertyUtility; 

public class GetActiveData 
{ 
    public static void main(String[] args) { 

     String sapURL = ""; 

     try { 


      sapURL = PropertyUtility.getSapURL(); 


      //Get Summary Data 
      SapDataSync sapDataSync = new SapDataSync(); 

      //sapDataSync.readTransactionJsonFromUrl(sapURL+"?isx=false"); 
      sapDataSync.readTransactionJsonFromUrl(sapURL+"?isx=E13F42EC5E38"); 

      } 
     catch(MalformedURLException me) 
     { 
      me.printStackTrace(); 
     } 
     catch (Exception e) { 
       e.printStackTrace(); 
     } 
    } 









} 

package bll.sap; 




    import java.io.BufferedReader; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.io.InputStreamReader; 
    import java.net.URL; 
    import java.nio.charset.Charset; 
    import java.util.ArrayList; 
    import java.util.Date; 
    import java.util.List; 

    import net.sf.json.JSONArray; 
    import net.sf.json.JSONException; 
    import net.sf.json.JSONObject; 
    import utility.Utility; 

    import com.google.code.morphia.Datastore; 

    import dal.GetMorphiaDB; 

    public class SapDataSync 
    { 

     private void saveSapTransaction(List<TransactionUnit> sapTransaction){ 
      GetMorphiaDB morphia; 
      try { 
       morphia = GetMorphiaDB.getInstance(); 
       Datastore ds = morphia.getDs(); 
       ds.save(sapTransaction); 
      }catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

     private void createSapTransaction(String transactionJson){ 
      JSONObject jsonObj = JSONObject.fromObject(transactionJson); 

      JSONArray transactionUnits = jsonObj.getJSONArray("TRANSACTION"); 


      List<ActiveUnit> transactionList = new ArrayList<ActiveUnit>(); 
      for(int i = 0; i < transactionUnits.size() ; i++){ 
       JSONObject jsn = transactionUnits.getJSONObject(i); 
       JSONObject jsnFeed = transactionUnits.getJSONObject(i); 

       ActiveUnit transactionUnit = new ActiveUnit(
         jsn.getString("listEditions"), 
         jsn.getString("listPackage"), 
         //Double.parseDouble(jsn.getString("YIELD")), 
         //Double.parseDouble(jsn.getString("QUANTITY")), 
         //Double.parseDouble(jsn.getString("VALUE")), 
         jsn.getString("referenceID") 
         //jsn.getString("PRICEGROUP"), 
         //jsn.getString("PAGE"), 
         //Utility.getCalendarTime(jsn.getString("PUBDATE"), "dd-MM-yyyy"), 
         //jsn.getString("CLIENTNAME"), 
         //jsn.getString("CLIENTCODE"), 
         // new Date().getTime(), 
         //jsn.getString("BOOKINGUNITNAME"), 
          //jsn.getString("BCCNAME"), 
          //jsn.getString("PAGENAME"), 
         // jsn.getString("PRICEGROUPNAME"), 
         // jsn.getString("ORDER"), 
         // jsn.getString("PAGE_LH_RH") 
         ); 
       transactionList.add(transactionUnit); 
       System.out.println(transactionList);  
      } 

      System.out.println(transactionList.size()); 
      if (transactionList.size() > 0) { 
       //saveSapTransaction(transactionList); 
      } 

     } 

     public void readTransactionJsonFromUrl(String url) throws IOException, JSONException { 
      InputStream is = new URL(url).openStream(); 
      try { 
       BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); 
       StringBuilder sb = new StringBuilder(); 
       int cp; 
       while ((cp = rd.read()) != -1) { 
       sb.append((char) cp); 
       } 
       createSapTransaction(sb.toString()); 
      } finally { 
       is.close(); 
      } 
      } 

    } 

package bll.sap; 

import java.io.Serializable; 
import java.util.Date; 

import org.bson.types.ObjectId; 

import com.google.code.morphia.annotations.Entity; 
import com.google.code.morphia.annotations.Id; 

@Entity("SapTransaction") 
public class ActiveUnit implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Id 
    private ObjectId id; 
    private Long tilCreationDate; 
    private String clientName; 
    private String clientCode; 
    private String listEditions; 
    private Long date; 
    private String listPackage; 
    private String bookingUnitName; 
    private String referenceID; 
    private String bccName; 
    private String page; 
    private String pageName; 
    private String priceGroup; 
    private String pgName; 
    private Double yield; 
    private Double qty; 
    private Double value; 
    private String order; 
    private String pageType; 

    public ActiveUnit() { 
    } 
    public ActiveUnit(String listEdtions, String listPackage, /*Double yield, 
      Double qty, Double value,*/ String referenceID /*, String priceGroup, 
      String page, Long date,String clientName, 
      String clientCode,Long tilCreationDate,String bookingUnitName,String bccName,String pageName,String pgName,String order,String pageType*/) { 
     this.listEditions = listEdtions; 
     this.listPackage = listPackage; 
     //this.yield = yield; 
     //this.qty = qty; 
     //this.value = value; 
     this.referenceID = referenceID; 
     //this.priceGroup = priceGroup; 
     //this.page = page; 
     //this.date = date; 
     //this.clientName = clientName; 
     //this.clientCode = clientCode; 
     //this.tilCreationDate = tilCreationDate; 
     //this.setBookingUnitName(bookingUnitName); 
     //this.bccName = bccName; 
     //this.pageName = pageName; 
     //this.pgName = pgName; 
     //this.order = order; 
     //this.pageType = pageType; 
    } 

    public String getClientName() { 
     return clientName; 
    } 

    public void setClientName(String clientName) { 
     this.clientName = clientName; 
    } 

    public String getClientCode() { 
     return clientCode; 
    } 

    public void setClientCode(String clientCode) { 
     this.clientCode = clientCode; 
    } 

    public void setId(ObjectId id) { 
     this.id = id; 
    } 

    public ObjectId getId() { 
     return id; 
    } 

    public void setTilCreationDate(Long tilCreationDate) { 
     this.tilCreationDate = tilCreationDate; 
    } 

    public Long getTilCreationDate() { 
     return tilCreationDate; 
    } 
    public String getreferenceID() { 
     return referenceID; 
    } 

    public void setreferenceID(String referenceID) { 
     this.referenceID = referenceID; 
    } 

    public String getPriceGroup() { 
     return priceGroup; 
    } 

    public void setPriceGroup(String priceGroup) { 
     this.priceGroup = priceGroup; 
    } 

    public String getPage() { 
     return page; 
    } 

    public void setPage(String page) { 
     this.page = page; 
    } 

    public Long getDate() { 
     return date; 
    } 

    public void setDate(Long date) { 
     this.date = date; 
    } 


    public String getListEditions() { 
     return listEditions; 
    } 

    public void setVertical(String listEditions) { 
     this.listEditions = listEditions; 
    } 

    public String getListPackage() { 
     return listPackage; 
    } 

    public void setListPackage(String listPackage) { 
     this.listPackage = listPackage; 
    } 

    public Double getYield() { 
     return yield; 
    } 

    public void setYield(Double yield) { 
     this.yield = yield; 
    } 

    public Double getQty() { 
     return qty; 
    } 

    public void setQty(Double qty) { 
     this.qty = qty; 
    } 

    public Double getValue() { 
     return value; 
    } 

    public void setValue(Double value) { 
     this.value = value; 
    } 

    public void setBookingUnitName(String bookingUnitName) { 
     this.bookingUnitName = bookingUnitName; 
    } 

    public String getBookingUnitName() { 
     return bookingUnitName; 
    } 

    public String getBccName() { 
     return bccName; 
    } 

    public void setBccName(String bccName) { 
     this.bccName = bccName; 
    } 

    public String getPageName() { 
     return pageName; 
    } 

    public void setPageName(String pageName) { 
     this.pageName = pageName; 
    } 

    public String getPgName() { 
     return pgName; 
    } 

    public void setPgName(String pgName) { 
     this.pgName = pgName; 
    } 

    @Override 
    public String toString() { 
     String unit = "{ " + 
          //"ClientCode: " + this.clientCode+ 
          //",TILCreation Date: " + new Date(this.tilCreationDate)+ 
          //",ClientName: "+ this.clientName+ 
          "listEditions: " + this.listEditions+ 
          ",listPackage: "+ this.listPackage+ 
          //",BookingUnitName: "+ this.bookingUnitName+ 
          //",Yield: "  + this.yield+ 
          //",QTY: " + this.qty+ 
          //",Value: " + this.value+ 
          ",referenceID: " + this.referenceID+ 
          //",Price Group: " + this.priceGroup+ 
          //",BCCName: " + this.bccName+ 
          //",PageName: " + this.pageName+ 
          //",PriceGroupName: " + this.pgName+ 
          //",Page: " + this.page+ 
          //",PageType: " + this.pageType+ 
          //",Order: " + this.order+ 
          //",PublishDate: " + new Date(this.date) + 

        " }"; 
     return unit; 
    } 
    public void setOrder(String order) { 
     this.order = order; 
    } 
    public String getOrder() { 
     return order; 
    } 
    public void setPageType(String pageType) { 
     this.pageType = pageType; 
    } 
    public String getPageType() { 
     return pageType; 
    } 
} 
+8

네, 맞습니다. 유효한 URL이 아닙니다. 질문이 뭐야? –

+1

코드도 공유하십시오 .. –

+1

이제 모든 코드가 삭제됩니다 ... 질문에 필요하지 않습니다. 대답은 예외 스택 –

답변

4

첫째 :

당신과 시도해야합니다.

두 번째로, URL이 포함 된 String이 URL 인코딩되어 있는지 확인하십시오. 나는. URL에 공백이나 다른 특수 문자가 없습니다. 공백을 인코딩해야합니다 (공백은 % 20 등).

위의 두 가지 조건이 충족되면 프로그램에서 java.net.URL 클래스의 예외를 throw해서는 안됩니다.

예외를 살펴보면 프로토콜 (http://)을 설정하기 만하면되지만 URL 주소 문자열을 올바르게 인코딩해야합니다. 그렇지 않으면 프로그램의 다른 부분에서 예외가 발생합니다. 또한 발생합니다 다음 문자열에 http://을 추가 또한

하는 MalformedURLException : 인코딩 할 필요가 특수 문자를 포함 할 것이다 당신의 URL (이 경우 ")로 "localhost/uatpw/ActiveTransaction"?isx=E13F42EC5E38.

유효한 URL을 제공하려면 URL의 서버 및 경로 세그먼트 영역에서 따옴표를 제거해야합니다 ( localhost/uatpw/ActiveTransaction?isx=E13F42EC5E38). 이렇게 http://을 작성하면 유효한 URL이됩니다.

2

당신은 로컬 호스트의 앞에 프로토콜 (예를 들어, http://를) 누락 다음과 같다.

welformed URL은이 문제가 아닙니다 http://localhost/uatpw/ActiveTransaction

0

수 있습니다. 너 뭐하려고?

그러나 "localhost/uatpw/ActiveTransaction"은 유효한 URL이 아닙니다. URL은 프로토콜 (http, https, ftp 등)으로 시작해야합니다. 당신이 당신의 요청에 대한 프로토콜이 설정되어 있는지 확인

http://localhost/uatpw/ActiveTransaction 
+0

에서 찾을 수 있습니다. URL 시작 부분에 http를 추가했지만 여전히 동일한 오류가 발생했습니다. – yatinbc

+1

@yatinbc : ** 정확한 ** 새 URL을 알려주십시오. –

+0

http : // localhost/uatpw/ActiveTransaction입니다. – yatinbc

관련 문제