android 通过访问 php 接受 or 传送数据
先说传送数据,可以在 利用 php 代替传送,直接把 访问的url加上 xxx.php?informatin=xxxxxx 就行了
接收的看代码吧,详细注释。
首先是 我自己定义的php 文件
<?php
header("Content-Type: text/html; charset=utf8"); $DataBase=$_REQUEST["DB"];//照应我java文件里面设置的DB
//$DataBase = "test";
//$col_name="content";
//$Order = "select * from user";
$Order=$_REQUEST["Order"];//照应Order //分别弄 创建、查询、插入、删除、更新的部分 $link=mysql_connect("localhost","root","");
mysql_query("SET NAMES 'utf8'",$link); //经验总结,使用mysql设置页面编码,最好等链接了,再设置,意思是在连库函数后面使用 if(!$link){
echo "connect_dataBase_wrong";exit();
}
if(!mysql_select_db($DataBase,$link)){
exit("select_db_wrong");
}
if(!$selec=mysql_query($Order,$link)){
exit("select_table_wrong");
}
$info=array();
$i=0;
if(mysql_num_rows($selec)){
while($row=mysql_fetch_assoc($selec)){
$data[] = $row;
}
//echo $row[$col_name]."</br>";
print(json_encode($data));
//echo $info[$i]."</br>";
//$i++;
mysql_close();
}
package com.example.administrator.lianxi;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList; /*Powered By LinGH-2015.2.16*/
/*
提示,在使用下面类的,android主页,一定要在onCreate函数里面的super.onCreate(savedInstanceState);之前加上下面两句,对应的头文件是 import android.os.StrictMode; 不加入会抛出无法联网的异常,因为在android 2.3之前是可以直接写要联网的代码的,之后就要另建线程了,具体请百度。 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build()); 还有,请在虚拟机上运行,别运行java程序,会抛错误异常的,这里有android的包 还一个是,请在AndroidManifest xml 页中,加入 联网的 pression
<uses-permission android:name="android.permission.INTERNET" />
*/
public class sql {
private String[] dataForTitle = new String[100];//定义一个用来放Listview 标题的 字符串数组,每个字符串长度为100字节
private String[] dataForContent = new String[100];//定义一个用来放Listview 内容的 字符串数组,每个字符串长度为100字节
private int rowNum = 0;//这个整型是用来保存数据表行数,用来返回的
private String result = "";//中间变量 public ArrayList<NameValuePair> init(String order,String db) {//这个函数用来初始化数组列表ArrayList
ArrayList<NameValuePair> name = new ArrayList<NameValuePair>();//定义一个键值对来行的数组容器
name.add(new BasicNameValuePair("Order",order));//这里设置php文件接收的Order,例如 $_REQUEST["Order"],根据你的php自己定义的来写
name.add(new BasicNameValuePair("DB",db));//上面我定义了一个mysql命令,这里是数据库名字,两个由参数传入,增加了灵活性
return name;//返回设置好了容器
} public String[] MySql_And_Get_colName(String url,String order,String db,String colName,String colName_1) {
//这条函数第一个参数是:你的终端php链接;第二个参数是:你要执行的数据库命令,根据你的php设置而定;
// 第三个参数:是要使用的数据库名字;第四个参数是:自定义的,你自己可以改,我这里是用来标记数据表的列名,和第5个参数一样,还能更多标记,自己设置;
InputStream GetContentFromDb = null;//定义一个保存输入流的变量
try {
HttpClient http = new DefaultHttpClient();//开启http服务
HttpPost post = new HttpPost(url);//传入url,初始化要post数据的url
post.setEntity(new UrlEncodedFormEntity(init(order,db)));//这里发送数据,看到init()函数的调用没
HttpResponse response = http.execute(post);//这里才正真地进行访问,带着上面设置的数据
HttpEntity responseFromDb = response.getEntity();//接受返回的实体
GetContentFromDb = responseFromDb.getContent();//接受实体内容,并保存到输入流对象中
} catch (Exception e) {
dataForTitle[0]=e.toString();
}
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(GetContentFromDb,"UTF-8"),8);
//上面的这句作用是把输入流里面的内容进行编码,第二个最好设置UTF-8,要和你的mysql表的一样,如果用iso-8859-1可能会抛出乱码错误
StringBuilder info = new StringBuilder();//定义字符容器
String line = null;//用来保存提取出的每行数据
while((line = reader.readLine())!=null){//保证读到的每行数据不为null
info.append(line+"\n");//每行相加
}
GetContentFromDb.close();//关闭
result=info.toString();//数据转化
}catch (Exception e){
dataForTitle[0]=e.toString();
}
try{
JSONArray jArray = new JSONArray(result);//把数据php的json数据放回到这里,记住,你php最后输出的一定要是json数据,否则,这里会抛出异常
if(jArray.length()>0) {//是否有数据
rowNum = jArray.length();//获取行数,并保存
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);//逐行获取接受回来的json数据
dataForTitle[i] = json_data.getString(colName);//将所想要获取的列数据存入字符串数组,我这里是title
dataForContent[i] = json_data.getString(colName_1);//这里是content
// System.out.println(data[i]);
}
}
}catch (Exception e){
dataForTitle[0]=e.toString();
}
return dataForTitle;
}
public String[] getColName_1(){
return dataForContent; //返回content
}
public int getRowNum(){
return rowNum; //返回行数
}
}
android 通过访问 php 接受 or 传送数据的更多相关文章
- 如何解析android访问webservice返回的SoapObject数据(可用)
怎么解析android访问webservice返回的SoapObject数据 本帖最后由 kkDragon123 于 2013-03-26 15:50:07 编辑 我的数据如下:mingdanResp ...
- Android fragment 想activity 传送数据
fragment可以通过定义 fragment的接口的方法来 想activity传送数据: 而activity则是通过实现 fragment的接口来接收fragment的送来的数据: 1.在fragm ...
- android开发中的5种存储数据方式
数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences ...
- Android Permission 访问权限大全(转)
程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES允 ...
- Android存储访问及目录
Android存储访问及目录 Android的外部存储 Android支持外部存储(case-insensitive filesystem with immutable POSIX permissio ...
- Android permission 访问权限大全
程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES ...
- Android WebView访问SSL证书网页(onReceivedSslError)
Android WebView访问https SSL证书网页,如淘宝,需要在onReceivedSslError添加SSL支持 webview.setWebViewClient(new WebView ...
- Android提供了5种方式存储数据:
--使用SharedPreferences存储数据: --文件存储数据: --SQLite数据库存储数据: --使用ContentProvider存储数据: --网络存储数据: 一:使用SharedP ...
- android Permission 访问权限许可
程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES允 ...
随机推荐
- .net 4.0 ValidateRequest="false" 无效
昨天安装了VisualStudio 2010 Ultimate,今天把最近的一个项目升级到了4.0下,结果跑了一下,发现关于页面启用 ValidateRequest="false" ...
- 关于C#的微信开发的入门记录一
在之前老是看到一些微信开发的例子,但是作为初学者会有很多问题,之前我也找了很多帖子,但是最终也没能解决,现在刚好手里有一个项目,总结一下分享给准备做却动不了手的朋友们,本文只是以我个人的经验作为浅谈( ...
- BCD码和十六进制,十进制转换
参考文档: http://wenku.baidu.com/link?url=CfK2Wl7sCEmpzEabnbHSbcwf2t4yoSH6_n8sUIRw54piWaRB7hZ6RkaStWEkbC ...
- SQL Server CONVERT() 截取日期
SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSELECT CONVERT(varchar(100), GETDATE() ...
- Sql Server 2012新特性 Online添加非空栏位.
我们都知道,Sql Server在一个数据量巨大的表中添加一个非空栏位是比较费心的,缺乏经验的DBA或是开发人员甚至可能鲁莽地直接添加导致阻塞相应业务,甚至可能因为资源欠缺造成实例的全局问题.当然这都 ...
- DBImport v3.5 中文版发布:数据库定时同步及文档生成工具(IT人员必备)
前言: 趁着最近的休息时间,只能多勤快些:多写代码,多更新文章. 因为一旦投入新的工作,估计博客又会恢复到一年才产几篇的状态. 对于DBImport,因为用户的意见,增加了一个亮点功能,让软件B格升为 ...
- Webix JavaScript UI 库可以帮你构建跨平台的HTML5 和 CSS3 程序
XB 软件公司最近发布了JavaScript UI 库Webix ,其中包含的组件超过45个,用这些组件可以构建跟HTML5 和 CSS3 兼容的程序,这些程序不仅能在个人电脑上运行,还能用在iOS. ...
- 嵌入式的重要平台 .NET Micro Framework
曾经辉煌的巨人PC界渐渐走向下坡路,而智能手机圈则没完没了般地争个你死我活.随着智能手机的广泛普及,不少商家为了不坐以待毙而纷纷开始涉足与穿戴式设备--智能手表(具体参见智能手表时代还有多远). 我们 ...
- [译] 给PHP开发者的PHP源码-第一部分-源码结构
文章来自:http://www.hoohack.me/2016/02/04/phps-source-code-for-php-developers-ch 原文:http://blog.ircmaxel ...
- ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习
一.天降神器“剃须刀” — Razor视图引擎 1.1 千呼万唤始出来的MVC3.0 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留 ...