简单地发出HTTP请求并接收内容

时间:2017-06-05 21:29:56

标签: java android http

我在How can I make a simple HTTP request in MainActivity.java? (Android Studio)找到了一个简单的HTTP请求的工作代码,我将在下面发布它(如果我没有错,现在需要使用{{1}进行一些更改})。但我想问一下如何收到内容?我通过以下方式处理代码:

try{} catch{}

GetUrlContentTask

GetUrlContentTask req = new GetUrlContentTask();
req.execute("http://192.168.1.10/?pin=OFF1");
textView3.setText(req.doInBackground("http://192.168.1.10/?pin=OFF1")); 

2 个答案:

答案 0 :(得分:0)

将此添加到您的onPostExecute(String result)来电

    protected void onPostExecute(String result) {
        // this is executed on the main thread after the process is over
        // update your UI here    
        setMyData(result);
    }

然后填写您需要更新的文本字段或其他任何数据。

    private void setMyData(String result){
        textView3.setText(result); 
    }

答案 1 :(得分:0)

你到底在哪里?您的代码大多正确,但您可能需要稍微重新排列。你的范围有点偏,你的注释代码几乎到了那里。见下文

protected String doInBackground(String... urls) {
    String content = "", line = "";
    HttpURLConnection httpURLConnection;
    BufferedReader bufferedReader;
    URL url;

    try {
        for(String uri : urls) {
            url = new URL(uri);
            url = new URI(url.toURI().getScheme(), url.getAuthority(), url.getPath(), "pin=" + URLEncoder.encode("&OFF1", "UTF-8"), null).toURL();

            httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setRequestMethod("GET");
            httpURLConnection.setDoOutput(true);
            httpURLConnection.connect();


            bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
            while ((line = bufferedReader.readLine()) != null) {
                content += line + System.lineSeparator();
            }
        }
     } catch (Exception e) {
         e.printStackTrace();
     } finally {
         try {
            bufferedReader.close();
         } catch(Exception e) {
             e.printStackTrace();
         }
     }

     return content;

}

这将返回页面的String表示形式。如果页面包含HTML,它将返回text / html,如果它包含文本,则只返回文本。

然后,作为之前的用户声明,您可以在GUI上设置响应

protected void onPostExecute(String result) {
    textView3.setText(result);
}

以上示例在技术上将起作用。但是,我强烈建议使用http://loopj.com/android-async-http/而不是HttpURLConnection。你的代码会更好,这将是重要的。

我发给你的代码假设参数总是pin = OFF1,因为它更像是一个概念验证