Android利用Get、Post 擷取網路資料

來源:互聯網
上載者:User

Android利用Get、Post 擷取網路資料

首先是Get:

布局很簡單,就一個按鈕,主要看一下MainActivity吧:

package com.francis.httpget;import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;public class MyActivity extends Activity {    BufferedReader bufferedReader;    InputStreamReader inputStreamReader;    InputStream inputStream;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_my);        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                new AsyncTask() {                    @Override                    protected Void doInBackground(String... params) {                        try {                            URL url = new URL(params[0]);                            URLConnection connection = url.openConnection();                            inputStream = connection.getInputStream();                            inputStreamReader = new InputStreamReader(inputStream,"UTF-8");                            bufferedReader = new BufferedReader(inputStreamReader);                            String line;                            while (true) {                                if ((line = bufferedReader.readLine()) != null) {                                    System.out.println(line);                                }                            }                        } catch (Exception e) {                            e.printStackTrace();                        } finally {                            try {                                bufferedReader.close();                                inputStreamReader.close();                                inputStream.close();                            } catch (IOException e) {                                e.printStackTrace();                            }                        }                        return null;                    }                }.execute("http://fanyi.youdao.com/openapi.do?keyfrom=HttpGetFrancis&key=893755706&type=data&doctype=xml&version=1.1&q=這裡是有道翻譯API");            }        });    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.my, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}

url為有道翻譯提供的API,非常方便。控制台輸出



接著是Post:

很簡單,這裡只給出提交post請求的Button的點擊事件:

和Get相比有2點需要注意:

1.url與參數是分開的;<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+Mi5jb25uZWN0aW9uLnNldERvSW5wdXQodHJ1ZSk7PGJyPgogICBjb25uZWN0aW9uLnNldERvT3V0cHV0KHRydWUpOzxicj4KICAgY29ubmVjdGlvbi5zZXRSZXF1ZXN0TWV0aG9kKA=="POST");

// Post        findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                new AsyncTask() {                    @Override                    protected Void doInBackground(String... params) {                        try {                            URL url = new URL(params[0]);                            HttpURLConnection connection = (HttpURLConnection)url.openConnection();                            connection.setDoInput(true);                            connection.setDoOutput(true);                            connection.setRequestMethod("POST");                            outputStream = connection.getOutputStream();                            outputStreamWriter = new OutputStreamWriter(outputStream,"UTF-8");                            bufferedWriter = new BufferedWriter(outputStreamWriter);                            bufferedWriter.write("keyfrom=HttpGetFrancis&key=893755706&type=data&doctype=xml&version=1.1&q=這裡是有道翻譯API");                            bufferedWriter.flush();                            inputStream = connection.getInputStream();                            inputStreamReader = new InputStreamReader(inputStream,"UTF-8");                            bufferedReader = new BufferedReader(inputStreamReader);                            String line;                            while (true) {                                if ((line = bufferedReader.readLine()) != null) {                                    System.out.println(line);                                }                            }                        } catch (Exception e) {                            e.printStackTrace();                        } finally {                            try {                                bufferedReader.close();                                inputStreamReader.close();                                inputStream.close();                            } catch (IOException e) {                                e.printStackTrace();                            }                        }                        return null;                    }                }.execute("http://fanyi.youdao.com/openapi.do");            }        });


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.