一定要加上对Sd卡读写文件的权限声明,以及访问网络的权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
get /post 工具
package com.act262.whpj.utils; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.io.PrintWriter; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.Date; import android.os.Environment; import android.util.PrintStreamPrinter; /** * 用于get或者post数据 */ public class GetPostUtil { public static final String TAG = "GetPostUtil Debug"; /** * @param url * 传入的url,包括了查询参数 * @return 返回get后的数据 */ public static String sendGet(String url) { String result = ""; // String URL realURL = null; URLConnection conn = null; BufferedReader bufReader = null; String line = ""; try { realURL = new URL(url); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("url 格式错误"); } try { conn = realURL.openConnection(); // 设置连接参数...conn.setRequestProperty("xx", "xx"); conn.setConnectTimeout(10000); // 10s timeout // conn.setRequestProperty("accept", "*/*"); // conn.setRequestProperty("", ""); conn.connect(); // 连接就把参数送出去了 get方法 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("连接错误"); } try { bufReader = new BufferedReader(new InputStreamReader( conn.getInputStream(), "gb2312")); while ((line = bufReader.readLine()) != null) { result += line + "\n"; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("读取数据错误"); } finally { // 释放资源 if (bufReader != null) { try { bufReader.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return result; } /** * @param url * @param param * 查询参数 ,形式如 name=xx&age=xx&sex=xx * @return */ public static String sendGet(String url, String param) { return sendGet(url + "?" + param); } /** * @param url * 指定的url,不包括查询参数 * @param param * 查询参数 形式如 name=xx&age=xx&sex=xx * @return 返回post后的数据 */ public static String sendPost(String url, String param) { String result = ""; URL realURL = null; BufferedReader bufReader = null; // PrintWriter printWriter = null; PrintStreamPrinter out = null; URLConnection connection = null; String line = ""; try { realURL = new URL(url); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { connection = realURL.openConnection(); // 设置为可输入输出 post的模式,而且在输出之前不能获取输入的数据,否则报错 connection.setDoOutput(true); connection.setDoOutput(true); // 已经连接了,所以不能再用connect(),否则报错的 out = new PrintStreamPrinter(new PrintStream( connection.getOutputStream())); out.println(param); // } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { bufReader = new BufferedReader(new InputStreamReader( connection.getInputStream(), "gb2312")); while ((line = bufReader.readLine()) != null) { result += line + "\n"; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { // 释放资源 try { if (bufReader != null) { bufReader.close(); } if (out != null) { // } } catch (IOException e2) { // TODO: handle exception } } return result; } public static void saveFile(String content) { File file = new File(Environment.getExternalStorageDirectory() .getAbsolutePath(), "file.html"); if (!file.exists()) { try { boolean status = file.createNewFile(); System.out.println("is create new file :" + status); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } PrintWriter pw = null; try { FileWriter fw = new FileWriter(file); // pw = new PrintWriter(new Date() + ".html"); // pw.println(content); fw.write(content); fw.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); if (pw != null) { pw.close(); } } } }
测试类
package com.act262.whpj.ui; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import com.act262.whpj.R; import com.act262.whpj.utils.GetPostUtil; public class StartActivity extends Activity { Button get, post; TextView showTextView; Handler handler; String result = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_start); get = (Button) findViewById(R.id.get); post = (Button) findViewById(R.id.post); showTextView = (TextView) findViewById(R.id.show); handler = new Handler() { public void handleMessage(Message msg) { if (msg.what == 0x123) { showTextView.setText(result); } } }; post.setOnClickListener(new ButtonListener()); get.setOnClickListener(new ButtonListener()); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.start, menu); return true; } class ButtonListener implements OnClickListener { @Override public void onClick(View v) { switch (v.getId()) { case R.id.get: new Thread() { public void run() { result = GetPostUtil .sendGet("http://www.baidu.com"); handler.sendEmptyMessage(0x123);// 通知UI线程更新界面 // Log.d(GetPostUtil.TAG, result); System.out.println(result); GetPostUtil.saveFile(result); } }.start(); showTextView.setText(result); break; case R.id.post: new Thread() { public void run() { result = GetPostUtil .sendPost( "http://www.baidu.com", "null"); handler.sendEmptyMessage(0x123);// 通知UI线程更新界面 Log.d(GetPostUtil.TAG, result); } }.start(); showTextView.setText(result); break; default: break; } } } }