我按照教程来却发现总是报错;
代码如下
private String url; //请求的地址
public httpThread(String url) {
this.url = url;
}
public String doGet() {
URL httpUrl = null;
try {
httpUrl = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
HttpURLConnection httpURLConnection;
httpURLConnection = (HttpURLConnection) new httpUrl.openConnection();
try {
httpURLConnection.setRequestMethod("GET"); //请求get方法
} catch (ProtocolException e) {
e.printStackTrace();
}
httpURLConnection.setReadTimeout(5000);
//接受返回来的数据
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
String str;
StringBuffer sb = new StringBuffer();
try {
while ((str = reader.readLine()) != null) {
sb.append(str);
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
![图片描述][2]
請問 這是什麼教學?使用瀏覽器看看請求是否管用 有可能作者編寫時可以訪問但是後來不能了
httpUrl前面為什麼有new
這就是一個方法你把new去掉啊
前幾句一直到"//接受返回來的資料"之前改成上面的再看看
兩個問題,其一,調用方法前面為什麼加個new,你要日天嗎,ide報的錯,滑鼠移上去或遊標放上去Ctrl+F1好好看看是什麼內容,大部分情況都可以看到原因
其二,try程式碼區塊外面的變數初始為null,在try裡賦值,catch程式碼區塊又沒有妥善處理異常,只是用printStackTrace打一下異常,那你後面呼叫這個引用變數的方法時,會有報NullPointException的情況,說的就是httpUrl這個對象,要嘛把那幾句寫到try裡,出錯就別運行,要嗎在外面調用時候先驗證是不是null,總之這裡異常處理的不好,新手學習一定要好好學習妥善處理好異常,和你寫註釋一樣養成良好的習慣,你後面的代碼我都沒再改了,另外我也沒寫處理的程式碼,但思路就是這樣,不要printStackTrace了事,該log的log,該throw的throw,否則以後你的程式碼搞到生產環境,運維全靠心靈感應了,不是被人罵死。