Android網路編程之http發送/請求服務

來源:互聯網
上載者:User

標籤:android   網路編程   base64   http   

最近在學習Android網路編程的知識,以下是今晚學習的一些心得。與大家共同分享。
在實際的應用開發中很多時候需要app向伺服器請求資料,那麼app如何發送請求呢?下面的代碼就是其中的一種情況,使用HttpURLConnection向伺服器發送請求的資料,然後處理伺服器返回的資料。

下面的代碼只是用戶端的一個簡答測試代碼。還需要在pc上安裝一個 tomcat伺服器 ,然後將demo中的jsp檔案部署到tomcat上,具體的方法百度一下便知。


package com.lee.nethttp;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.util.Base64;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity {    private EditText mEditText = null;    private Button mButton = null;    private TextView mTextView = null;        private String mUrl = "http://192.168.0.109:8080/lee/index.jsp";//根據自己主機的ip設定    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mEditText = (EditText) findViewById(R.id.edit);        mButton = (Button) findViewById(R.id.button);        mButton.setOnClickListener(mButtonClickListener);        mTextView = (TextView) findViewById(R.id.text);    }    private OnClickListener mButtonClickListener = new OnClickListener() {        @Override        public void onClick(View v) {            String content = mEditText.getText().toString();            content = toBase64(content);            String[] params = { content };            new NetHttpAsyncTask().execute(params);        }    };    private class NetHttpAsyncTask extends AsyncTask<String, Void, String> {        @Override        protected String doInBackground(String... params) {            String result = null;                        try {                URL url = new URL(mUrl);                HttpURLConnection connection = (HttpURLConnection)url.openConnection();                                connection.setRequestMethod("POST");                connection.setDoInput(true);                connection.setDoOutput(true);                connection.setUseCaches(false);                connection.setRequestProperty("Content-type",                        "application/x-www-form-urlencoded;charset=UTF-8");                connection.setConnectTimeout(3000);                connection.setReadTimeout(3000);                                PrintWriter writer = new PrintWriter(connection.getOutputStream());                String str = "content" + "=" + params[0];                writer.print(str);                writer.flush();                writer.close();                                InputStream input = connection.getInputStream();                ByteArrayOutputStream outputBuffer = new ByteArrayOutputStream();                int ch;                while((ch = input.read()) != -1){                    outputBuffer.write(ch);                }                                result = outputBuffer.toString();            } catch (IOException e) {                e.printStackTrace();            }                        return result;        }        @Override        protected void onPostExecute(String result) {            mTextView.setText(result);        }    }        private String toBase64(String content){        try {            content = Base64.encodeToString(content.getBytes("UTF-8"), Base64.DEFAULT);            Log.e("lee", "toBase64 content = " + content);        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }                return content;    }}




Demo



Android網路編程之http發送/請求服務

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.