0

URL から HTML ソース コードを取得し、それを文字列に渡そうとしています。デバッグ ボタンを押すと、デバッガを開くかどうか尋ねられます (コードは正常にコンパイルされます)。

デバッガ: ActivityThread.performLaunchActivity(ActivityThread$ActivityClientRecord, Intent) 行: 2180

e > cause > "java.lang.NullPointerException" および "detailMessage null" と表示されます。

したがって、これが NullPointerException であることは理解していますが、どこにあるのかわかりません。

LogCatが言う唯一のことは次のとおりです。

08-14 00:34:10.437: E/Trace(1784): error opening trace file: No such file or directory (2)
08-14 00:34:10.437: I/System.out(1784): Sending WAIT chunk
08-14 00:34:10.437: I/dalvikvm(1784): Debugger is active
08-14 00:34:10.644: I/System.out(1784): Debugger has connected
08-14 00:34:10.644: I/System.out(1784): waiting for debugger to settle...
08-14 00:34:11.867: I/System.out(1784): debugger has settled (1300)
08-14 00:34:13.428: D/dalvikvm(1784): threadid=1: still suspended after undo (sc=1 dc=1)

私はあなたにどんな情報を提供すればよいのかよくわかりません。:/

これに使用するコードは (これは GetCode クラスです)

    public String html;

public void getSourceCode() throws ClientProtocolException, IOException {
    HttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet("http://www.novasoftware.se/webviewer/(S(pisjjgujku50by55lpbdl1a2))/design1.aspx?schoolid=18200&code=83310");
    HttpResponse response = client.execute(request);

    html = "";
    InputStream in = response.getEntity().getContent();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    StringBuilder str = new StringBuilder();
    String line = null;
    while((line = reader.readLine()) != null)
    {
        str.append(line);
    }
    in.close();
    html = str.toString();
    System.out.println("html");

}

次に、メインクラスでコードを印刷しようとします。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
        doStuff();
}



private void doStuff() {
    try {
        getcode.getSourceCode();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println(getcode.html);
}
4

1 に答える 1

0

まず、正確な診断のための十分な情報をまだ提供していません。以下を提供する必要があります。

  • 何が起こっているかの完全かつ正確な説明
  • 行番号を含む、例外の完全なスタック トレース
  • 「点をつなぐ」すべてのコード。たとえば、いつ、どこで getSourceCode が呼び出されるか。

そうは言っても、あなたが提供した(部分的な)コードでNPEの2つの考えられる原因を見ることができます:

  • getSourceCode()が呼び出されない場合、html変数はメソッドが呼び出されnullたときである可能性があります。onCreate

  • によって返された Response オブジェクトclient.execute(request)がエラー応答である場合 (つまり、ステータスが 4xx または 5xx 応答コードである場合)、 はresponse.getEntity()を返しnullます。これは、応答にコンテンツがない場合にも発生する可能性があると思います。

于 2013-08-14T01:42:20.100 に答える