android 通过访问 php 接受 or 传送数据

先说传送数据,可以在 利用 php 代替传送,直接把 访问的url加上 xxx.php?informatin=xxxxxx 就行了

接收的看代码吧,详细注释。

首先是 我自己定义的php 文件

 1 <?php
 2 header("Content-Type: text/html; charset=utf8");
 3
 4 $DataBase=$_REQUEST["DB"];//照应我java文件里面设置的DB
 5 //$DataBase = "test";
 6 //$col_name="content";
 7 //$Order = "select * from user";
 8 $Order=$_REQUEST["Order"];//照应Order
 9
10
11
12 //分别弄 创建、查询、插入、删除、更新的部分
13
14
15
16 $link=mysql_connect("localhost","root","");
17 mysql_query("SET NAMES ‘utf8‘",$link); //经验总结,使用mysql设置页面编码,最好等链接了,再设置,意思是在连库函数后面使用
18
19 if(!$link){
20   echo "connect_dataBase_wrong";exit();
21 }
22 if(!mysql_select_db($DataBase,$link)){
23   exit("select_db_wrong");
24 }
25 if(!$selec=mysql_query($Order,$link)){
26   exit("select_table_wrong");
27 }
28 $info=array();
29 $i=0;
30 if(mysql_num_rows($selec)){
31   while($row=mysql_fetch_assoc($selec)){
32      $data[] = $row;
33   }
34      //echo $row[$col_name]."</br>";
35      print(json_encode($data));
36      //echo $info[$i]."</br>";
37      //$i++;
38      mysql_close();
39 } 
 1 package com.example.administrator.lianxi;
 2 import org.apache.http.HttpEntity;
 3 import org.apache.http.HttpResponse;
 4 import org.apache.http.NameValuePair;
 5 import org.apache.http.client.HttpClient;
 6 import org.apache.http.client.entity.UrlEncodedFormEntity;
 7 import org.apache.http.client.methods.HttpPost;
 8 import org.apache.http.impl.client.DefaultHttpClient;
 9 import org.apache.http.message.BasicNameValuePair;
10 import org.json.JSONArray;
11 import org.json.JSONObject;
12 import java.io.BufferedReader;
13 import java.io.InputStream;
14 import java.io.InputStreamReader;
15 import java.util.ArrayList;
16
17 /*Powered By LinGH-2015.2.16*/
18 /*
19 提示,在使用下面类的,android主页,一定要在onCreate函数里面的super.onCreate(savedInstanceState);之前加上下面两句,对应的头文件是
20
21 import android.os.StrictMode;
22
23 不加入会抛出无法联网的异常,因为在android 2.3之前是可以直接写要联网的代码的,之后就要另建线程了,具体请百度。
24
25 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
26 StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
27
28 还有,请在虚拟机上运行,别运行java程序,会抛错误异常的,这里有android的包
29
30 还一个是,请在AndroidManifest xml 页中,加入 联网的 pression
31 <uses-permission android:name="android.permission.INTERNET" />
32 */
33 public class sql {
34     private String[] dataForTitle = new String[100];//定义一个用来放Listview 标题的 字符串数组,每个字符串长度为100字节
35     private String[] dataForContent = new String[100];//定义一个用来放Listview 内容的 字符串数组,每个字符串长度为100字节
36     private int rowNum = 0;//这个整型是用来保存数据表行数,用来返回的
37     private String result = "";//中间变量
38
39     public ArrayList<NameValuePair> init(String order,String db) {//这个函数用来初始化数组列表ArrayList
40         ArrayList<NameValuePair> name = new ArrayList<NameValuePair>();//定义一个键值对来行的数组容器
41         name.add(new BasicNameValuePair("Order",order));//这里设置php文件接收的Order,例如 $_REQUEST["Order"],根据你的php自己定义的来写
42         name.add(new BasicNameValuePair("DB",db));//上面我定义了一个mysql命令,这里是数据库名字,两个由参数传入,增加了灵活性
43         return name;//返回设置好了容器
44     }
45
46     public String[] MySql_And_Get_colName(String url,String order,String db,String colName,String colName_1) {
47         //这条函数第一个参数是:你的终端php链接;第二个参数是:你要执行的数据库命令,根据你的php设置而定;
48         // 第三个参数:是要使用的数据库名字;第四个参数是:自定义的,你自己可以改,我这里是用来标记数据表的列名,和第5个参数一样,还能更多标记,自己设置;
49         InputStream GetContentFromDb = null;//定义一个保存输入流的变量
50         try {
51             HttpClient http = new DefaultHttpClient();//开启http服务
52             HttpPost post = new HttpPost(url);//传入url,初始化要post数据的url
53             post.setEntity(new UrlEncodedFormEntity(init(order,db)));//这里发送数据,看到init()函数的调用没
54             HttpResponse response = http.execute(post);//这里才正真地进行访问,带着上面设置的数据
55             HttpEntity responseFromDb = response.getEntity();//接受返回的实体
56             GetContentFromDb = responseFromDb.getContent();//接受实体内容,并保存到输入流对象中
57         } catch (Exception e) {
58             dataForTitle[0]=e.toString();
59         }
60         try{
61             BufferedReader reader = new BufferedReader(new InputStreamReader(GetContentFromDb,"UTF-8"),8);
62             //上面的这句作用是把输入流里面的内容进行编码,第二个最好设置UTF-8,要和你的mysql表的一样,如果用iso-8859-1可能会抛出乱码错误
63             StringBuilder info = new StringBuilder();//定义字符容器
64             String line = null;//用来保存提取出的每行数据
65             while((line = reader.readLine())!=null){//保证读到的每行数据不为null
66                 info.append(line+"\n");//每行相加
67             }
68             GetContentFromDb.close();//关闭
69             result=info.toString();//数据转化
70         }catch (Exception e){
71             dataForTitle[0]=e.toString();
72         }
73         try{
74             JSONArray jArray = new JSONArray(result);//把数据php的json数据放回到这里,记住,你php最后输出的一定要是json数据,否则,这里会抛出异常
75             if(jArray.length()>0) {//是否有数据
76                 rowNum = jArray.length();//获取行数,并保存
77                 for (int i = 0; i < jArray.length(); i++) {
78                     JSONObject json_data = jArray.getJSONObject(i);//逐行获取接受回来的json数据
79                     dataForTitle[i] = json_data.getString(colName);//将所想要获取的列数据存入字符串数组,我这里是title
80                     dataForContent[i] = json_data.getString(colName_1);//这里是content
81                     // System.out.println(data[i]);
82                 }
83             }
84         }catch (Exception e){
85             dataForTitle[0]=e.toString();
86         }
87     return dataForTitle;
88 }
89     public String[] getColName_1(){
90         return dataForContent; //返回content
91     }
92     public int getRowNum(){
93         return rowNum;  //返回行数
94     }
95 }
时间: 2024-10-11 18:18:46

android 通过访问 php 接受 or 传送数据的相关文章

Android fragment 想activity 传送数据

fragment可以通过定义 fragment的接口的方法来 想activity传送数据: 而activity则是通过实现 fragment的接口来接收fragment的送来的数据: 1.在fragment 的subclass 中定义一个接口 如 OnInterfaceOfFragmentone 接口: 在接口中定义一些方法:让activity来调用: public OnInterfaceOfFragmentone mCallback; //为Activity 定义一个接口: public in

SEAndroid安全机制对Android属性访问的保护分析

Android系统通过属性暴露设备和运行时信息,并且可以通过设置属性来控制系统行为.因此,属性也像文件一样,是一种需要保护的资源.在启用SEAndroid之前,敏感属性只能被预先设定的进程进行设置.启用SEAndroid之后,敏感属性会进一步被SEAndroid安全策略保护.这样就可以更有效地保护系统属性了.在本文中,我们就详细分析SEAndroid安全机制对Android属性设置保护提供的支持. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 在分析SE

android开发中的5种存储数据方式

数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstance State保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整

如何监听第三方应用程序(SOAP or RESTful 客户端)访问HTTPS网站时的数据?

随着互联网的应用越来越多,在我们的日常开发和调试当中(比如调试SOAP和RESTFul的时候),我们常常需要访问用第三方的工具访问HTTPS的网站,为了简化描述,本文使用IE浏览器访问Google 提供的https://www.googleapis.com/discovery/v1/apis RESTful服务为例,注意这个是基于https协议的访问,如果用第三方的嗅探工具,比如wiresharp,即使我们能把http的数据包抓到,显示出来的内容也是乱码,因为传送的内容经过了加密,而加密的私钥就

Android:解决客户端从服务器上获取数据乱码的方法

向服务器发送HTTP请求,接收到的JSON包为response,用String content = EntityUtils.toString(response.getEntity(),"utf-8");解码还是出现了中文乱码,在后面加了 String name = new String(response.getBytes("iso-8859-1"), "UTF-8"); 也无济于事.想到服务器好像是用URLENCODER编了码的,怀着试一试的态度

转载——Android permission 访问权限大全

程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: Android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问"properties"表在checkin数据库中,改值可以修改上传( Allows read/write access to the "properties" table in the checkin database, to change values

Node.JS的表单提交及OnceIO中接受GET/POST数据的三种方法

OnceIO 是 OnceDoc 企业私有内容(文档)管理系统的底层Web框架,它可以实现模板文件.静态文件的全缓存,运行起来完全不需要I/O操作,并且支持客户端缓存优化,GZIP压缩等(只压缩一次),拥有非常好的性能,为您节约服务器成本.它的模块化功能,可以让你的Web进行分布式存储,在一个扩展包里即可包含前端.后端和数据库定义,只需通过添加/删除目录的方式就可实现功能删减,实现真正的模块化扩展.目前 OnceIO 已经开源,本文主要介绍node.js语言中的表单提交及OnceIO中接受GET

android:各种访问权限Permission

在Android的设计中,资源的访问或者网络连接,要得到这些服务都需要声明其访问权限,否则将无法正常工作.在Android中这样的权限有很多种,这里将各类访问权限一一罗列出来,供大家使用时参考之用. android.permission.EXPAND_STATUS_BAR允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似Windows Mobile中的托盘程序 android.permission.FACTORY_TEST作为一个工厂测试程序,运行在root用户 android

Android Permission 访问权限大全(转)

程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问”properties”表在 checkin数据库中,改值可以修改上传( Allows read/write access to the “properties” table in the checkin database, to change values that get upload