0

我正在构建我的第一个应用程序,对此我有点陌生,但是:

我正在使用 HttpURLConnection 发送 HTTP Get 请求。这是我的活动代码:

    import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class HttpGetServletActivity3 extends Activity implements
    OnClickListener {
Button button;
TextView outputText;

public static final String URL =
    "URL";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    findViewsById();

    button.setOnClickListener(this);
}

private void findViewsById() {
    button = (Button) findViewById(R.id.button);
    outputText = (TextView) findViewById(R.id.outputTxt);
}

public void onClick(View view) {
    GetXMLTask task = new GetXMLTask();
    task.execute(new String[] { URL });
}

private class GetXMLTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... urls) {
        String output = null;
        for (String url : urls) {
            output = getOutputFromUrl(url);
        }
        return output;
    }

    private String getOutputFromUrl(String url) {
        StringBuffer output = new StringBuffer("");
        try {
            InputStream stream = getHttpConnection(url);
            BufferedReader buffer = new BufferedReader(
                    new InputStreamReader(stream));
            String s = "";
            while ((s = buffer.readLine()) != null)
                output.append(s);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        return output.toString();
    }

    // Makes HttpURLConnection and returns InputStream
    private InputStream getHttpConnection(String urlString)
            throws IOException {
        InputStream stream = null;
        URL url = new URL(urlString);
        URLConnection connection = url.openConnection();

        try {
            HttpURLConnection httpConnection = (HttpURLConnection) connection;
            httpConnection.setRequestMethod("GET");
            httpConnection.connect();

            if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                stream = httpConnection.getInputStream();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return stream;
    }

    @Override
    protected void onPostExecute(String output) {
        outputText.setText(output);
    }
}
}

此代码将帮助我显示网站的源代码,并且它正在工作!但是如果我想要特定的源代码行怎么办?仅示例第 60 行?我试图更改以下 BuuferedReader 块:

BufferedReader buffer = new BufferedReader(
                    new InputStreamReader(stream));
            String s = "";
            while ((s = buffer.readLine()) != null)
                output.append(s);

我改写了以下 LineReader 但没有用:

LineNumberReader lnr = new LineNumberReader(new InputStreamReader(stream));   
            String s = "";
            if (lnr.getLineNumber() == 60){
                output.append(s);
            }

这是这样做的方法还是我错过了什么?

4

2 回答 2

0

如果您试图获取您知道位于边界之间的部分代码(即 和 ),那么您可以执行以下操作:

将 Stream 转换为单个字符串(我们将其称为结果),然后:

String start = "<body>", end = "</body>";
result = result.substring(result.indexOf(start) + start.length(), result.indexOf(end));
于 2013-05-13T14:38:36.540 回答
0

您可以使用 setLineNumber 方法;

lnr.setLineNumber(60)

然后,您可以阅读该行!

于 2013-05-13T06:02:06.483 回答