一定要加上对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;
}
}
}
}