Android(7)模拟Http请求及访问网络和SDCard的权限设置
来源:互联网 发布:udp服务端保存数据 编辑:程序博客网 时间:2024/05/21 00:16
1 在manifest.xml文件中,application标签前添加:
<uses-permission android:name="android.permission.INTERNET"/><!-- 向SDCard写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!-- SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 这一设置可以没有
2 示例
2.1 使用HttpURLConnection
BasicHttpClient.java
public class BasicHttpClient {private static final int TIME_OUT = 1000*6;private static final String METHOD_POST="POST";private static final String METHOD_GET="GET";private static final int HTTP_OK = 200;public String httpGet(String urlStr) {URL url = null;HttpURLConnection conn = null;InputStream inStream = null;String response = null;try {url = new URL(urlStr);conn = (HttpURLConnection) url.openConnection();conn.setDoInput(true);conn.setConnectTimeout(TIME_OUT);conn.setRequestMethod(METHOD_GET);conn.setRequestProperty("accept", "*/*");conn.connect();int responseCode = conn.getResponseCode();if(responseCode == HTTP_OK) {inStream = conn.getInputStream();response = getResponse(inStream);} else {response = "返回码:"+responseCode;}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {conn.disconnect();}return response;}public String httpPost(String urlStr, String params) {byte[] data = params.getBytes();URL url = null;HttpURLConnection conn = null;InputStream inStream = null;String response = null;try {url = new URL(urlStr);conn = (HttpURLConnection) url.openConnection();conn.setDoOutput(true);conn.setDoInput(true);conn.setUseCaches(false);conn.setConnectTimeout(TIME_OUT);conn.setRequestMethod(METHOD_POST);conn.setRequestProperty("Connection", "Keep-Alive");conn.setRequestProperty("Charset", "UTF-8");conn.setRequestProperty("Content-Length", String.valueOf(data.length));conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");conn.connect();DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream());outputStream.write(data);outputStream.flush();outputStream.close();int responseCode = conn.getResponseCode();if(responseCode == HTTP_OK) {inStream = conn.getInputStream();response = getResponse(inStream);} else {response = "返回码:"+responseCode;}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {conn.disconnect();}return response;}private String getResponse(InputStream inStream) throws Exception {ByteArrayOutputStream outputStream = new ByteArrayOutputStream();int len = -1;byte[] buffer = new byte[1024];while((len=inStream.read(buffer))!=-1) {outputStream.write(buffer, 0, len);}byte[] data = outputStream.toByteArray();return new String(data);}}
BasicHttpClientTest.java
public class BasicHttpClientTest extends AndroidTestCase {private static final String TAG = "BasicHttpClientTest";String urlStr = "http://192.168.1.107:8080/test/test.txt";String params = "id=1&name=jiao";public void testHttpGet() {BasicHttpClient client = new BasicHttpClient();String response = client.httpGet(urlStr+"?"+params);Log.i(TAG, response);}public void testHttpPost() {BasicHttpClient client = new BasicHttpClient();String response = client.httpPost(urlStr, params);Log.i(TAG, response);}}
2.2 使用Apache提供的HttpClient
ApacheHttpClient.java
public class ApacheHttpClient {public String httpGet(String urlStr) {String response = null;HttpClient httpclient = new DefaultHttpClient();HttpGet httpGet = new HttpGet(urlStr);HttpResponse httpResponse;try {httpResponse = httpclient.execute(httpGet);int responseCode = httpResponse.getStatusLine().getStatusCode();if (responseCode == HttpStatus.SC_OK) {response = EntityUtils.toString(httpResponse.getEntity());} else {response = "返回码:" + responseCode;}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return response;}public String httpPost(String urlStr, List<NameValuePair> params) throws Exception {String response = null;HttpClient httpClient = new DefaultHttpClient();HttpPost httppost = new HttpPost(urlStr);try {httppost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));HttpResponse httpResponse = httpClient.execute(httppost);int responseCode = httpResponse.getStatusLine().getStatusCode();if (responseCode == HttpStatus.SC_OK) {response = EntityUtils.toString(httpResponse.getEntity());} else {response = "返回码:" + responseCode;}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return response;}}
测试代码:
public void testHttpPost() {ApacheHttpClient client = new ApacheHttpClient();List<NameValuePair> params = new ArrayList<NameValuePair>();params.add(new BasicNameValuePair("id", "1"));params.add(new BasicNameValuePair("name", "jiao"));String response = null;try {response = client.httpPost(urlStr, params);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}Log.i(TAG, "##"+response);}
阅读全文
0 0
- Android(7)模拟Http请求及访问网络和SDCard的权限设置
- HTTP访问请求信息提取及权限
- 更改Android sdcard访问权限
- android sdcard访问权限问题
- Android (cocos2dx 网络访问)访问权限设置
- Android的http网络请求和发送
- Android Http请求网络模拟超时
- Android Http请求网络模拟超时
- Android异步Http网络请求访问服务器端的用法
- android之网络访问http请求总结
- 网络请求权限设置
- Android单元测试,模拟http的get和post请求
- WebView的使用(http协议访问网络Get和Post请求方式)
- android sdcard文件访问权限与apk应用 userid 访问权限的关系。
- android sdcard文件访问权限与apk应用 userid 访问权限的关系。
- python http请求及cookie的模拟
- python http请求及cookie的模拟
- Android网络请求(HTTP)
- php关键字的应用
- python安装pip
- HDU6025
- 分享一套4A公司门户模板(支持响应式与移动APP接入及微信管理强大后台)
- 字符串和字节字符串
- Android(7)模拟Http请求及访问网络和SDCard的权限设置
- 《C#入门经典(第7版)》变量和表达式
- python之readline模块 实现自动补全
- 跟踪springmvc请求
- LeetCoder 23. Merge k Sorted Lists
- Redis集群搭建与简单使用
- 04.java标识符和关键字
- python字典(dict)get方法
- 依赖注入