簡體   English   中英

Android應用程序中未處理的異常java.net.MalformedURLException

[英]Unhandled exception java.net.MalformedURLException in an Android app

我的代碼有問題

void getItembyID(String code){
    String site;
    site = "http:/www.sprii.net/db/getItem.php?pid="+code+"/";
    URL url = new URL(site);
}

在用IntelliJ編寫時,第三行出現異常。 問題出在URL url = new URL(site); 我應該嘗試/抓住它嗎? 為什么會發生? 我嘗試輸入"http://www.google.com/"以查看其是否適用,但仍然給我同樣的例外

編輯:我意識到我在我的網站名稱中有一個錯誤。 它在http:之后遺漏//。 但是,更改后,我仍然得到“ java.net.MalformedURLException”

我意識到了問題所在。 此錯誤意味着我正在調用的方法是使用throws聲明的,因此必須使用try{}catch(){}或通過添加相同的throws

如果您應該在附加之前對它進行編碼,請確保String code沒有任何空格

發送以下網址時,我遇到了類似的錯誤

字符串unEncodedUrl =“ https://yXXXXXXdh.execute-api.us-east-1.amazonaws.com/prod/helloWorld?date=2017年 12月29日”;

URL url =新URL(unEncodedUrl);

上一行已引發錯誤,因為日期url查詢值中空格

因此您可以通過對日期值進行編碼來解決

字符串encodeUrl =“ https://yXXXXXXdh.execute-api.us-east-1.amazonaws.com/prod/helloWorld?date= ”“ + URLEncoder.encode(finaldate,” utf-8“);

注意:請勿對整個URL進行編碼,而僅對包含空格的部分進行編碼

您缺少/

嘗試使用“ http://www.sprii.net/db/getItem.php?pid=

也許您應該擴展此功能,以便在出現更多錯誤時可以看到更多錯誤,例如下面的代碼。 (順便說一句,這為我執行,但是我不知道該參數的任何有效“代碼”值)

    public void getItembyID(String code) {
    String site;

    site = "http://www.sprii.net/db/getItem.php?pid=" + code + "/";

    try {
        URL url = new URL(site);
    } catch (MalformedURLException e) {
        System.out.println("Error: " + e.getMessage());
        e.printStackTrace();
    }

}

您在網址中缺少/。 應該是http://

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM