android使用url connection示例(get和post数据获取返回数据)
android使用url connection示例(get和post数据获取返回数据)
发布时间:2016-12-28 来源:查字典编辑
摘要:一定要加上对Sd卡读写文件的权限声明,以及访问网络的权限复制代码代码如下:get/post工具复制代码代码如下:packagecom.act...

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

}

}

}

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新安卓软件开发学习
热门安卓软件开发学习
编程开发子分类