我按照教程来却发现总是报错;
代码如下
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 があるのはなぜですか
リーリー
これは新しいものを削除する方法です
リーリー
「//返されたデータを受け入れる」までの最初の数文を上記に変更して、もう一度見てください。
2 つの質問のうち、1 つは、なぜ呼び出しメソッドの前に new を追加する必要があるのでしょうか? IDE が毎日エラーを報告しました。マウスを上に移動するか、Ctrl+F1 にカーソルを置くと、ほとんどの場合、その理由がわかります。次に、try コード ブロックの外側の変数が最初は null であり、その値がヌルであることがわかります。 catch コード ブロックが適切に割り当てられていません。例外を処理するには、printStackTrace を使用して例外を報告します。その後、その変数を参照するメソッドを呼び出すと、これは httpUrl オブジェクトです。または、これらのいくつかの文を try に書き込みます。エラーが発生した場合は、それが null であるかどうかを確認しますか? つまり、初心者は例外を適切に処理することを学ぶ必要があります。コメントを書くような良い習慣を身につけてください。また、私は処理コードを書きませんでしたが、このような考えでログを作成します。そうしないと、将来、コードが運用環境に置かれたときに、運用と保守が完全にテレパシーに依存することになります。