標籤: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發送/請求服務