您好,欢迎访问一九零五行业门户网

Android+PHP 使用HttpClient提交POST的请求,使用JSON解析响应

这里介绍一下如何让自己的android程序具有联网功能。当然首先要有一台服务器,如果只是进行测试的话,可以使用局域网代替(手机连电脑wifi)。
要求电脑已配置好apache+php环境。
       下面是一个简单的android程序,相信只要有一定的java基础就能大概“猜懂”其中的含义。(程序可能写的不够完善)
android程序
布局文件
gravity=center android:text=使用json解析 android:textsize=30sp/> gravity=center> gravity=center>
mainactivity.java
package com.example.jsontest;import java.io.bufferedreader;import java.io.inputstream;import java.io.inputstreamreader;import java.util.arraylist;import java.util.list;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.apache.http.protocol.http;import org.json.jsonarray;import org.json.jsonobject;import android.os.bundle;import android.os.looper;import android.support.v7.app.actionbaractivity;import android.view.menu;import android.view.menuitem;import android.view.view;import android.view.view.onclicklistener;import android.widget.button;import android.widget.edittext;import android.widget.toast;public class mainactivity extends actionbaractivity { edittext et_id; edittext et_psw; button btn_login; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); initview(); } private boolean check(string id, string psw) { if(.equals(id) || .equals(psw)) return false; return true; } private void initview() { et_id = (edittext)findviewbyid(r.id.et_id); et_psw = (edittext)findviewbyid(r.id.et_psw); btn_login = (button)findviewbyid(r.id.btn_login); btn_login.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { // todo auto-generated method stub //获取用户输入的用户名和密码 final string id = et_id.gettext().tostring().trim(); final string psw = et_psw.gettext().tostring().trim(); if(check(id, psw)) { new thread() { public void run() { try { httppost post = new httppost(这里要改成服务器文件所在url地址); //如果传递参数个数比较多,可以对传递的参数进行封装 list params = new arraylist(); params.add(new basicnamevaluepair(id, id)); params.add(new basicnamevaluepair(psw, psw)); //设置请求参数 post.setentity(new urlencodedformentity(params, http.utf_8)); httpclient httpclient = new defaulthttpclient(); //发送post请求 httpresponse response = httpclient.execute(post); //如果服务器成功地返回响应 if(response.getstatusline().getstatuscode() == 200) { //string msg = entityutils.tostring(response.getentity()); httpentity entity = response.getentity(); inputstream is = entity.getcontent(); bufferedreader reader = new bufferedreader(new inputstreamreader(is, utf-8), 8); stringbuilder sb = new stringbuilder(); sb.append(reader.readline() + \n); // 这里 “ + \n ”加不加似乎对结果没有什么影响 string line = 0; while((line = reader.readline()) != null) { sb.append(line + \n); // 这里 “ + \n ”加不加似乎对结果没有什么影响 } is.close(); //获取请求响应结果 string result = sb.tostring(); system.out.println(result); //打包成json进行解析 jsonarray jsonarray = new jsonarray(result); jsonobject jsondata = null; //返回用户id,用户密码 string userid = ; string userpsw = ; //使用list进行存储 list data = new arraylist(); for(int i = 0; i 索引,根据索引获取值 userpsw = jsondata.getstring(userpsw); //userpsw是来源于服务器端php程序响应结果res的索引,根据索引获取值 data.add(用户id: + userid + ,用户密码: + userpsw); //保存返回的值,可进行相应的操作,这里只进行显示 } looper.prepare(); toast.maketext(mainactivity.this, data.tostring(), toast.length_long).show(); looper.loop(); } else { looper.prepare(); toast.maketext(mainactivity.this, 登录失败, toast.length_long).show(); looper.loop(); } } catch(exception e) { e.printstacktrace(); } } }.start(); } } }); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate the menu; this adds items to the action bar if it is present. getmenuinflater().inflate(r.menu.main, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. the action bar will // automatically handle clicks on the home/up button, so long // as you specify a parent activity in androidmanifest.xml. int id = item.getitemid(); if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); }}
而下面是一个服务器端php文件(文件内并未连接数据库的操作,如果希望的话,可以连接数据库,获取动态数据。对于php有所了解的人可以很容易的改成连接数据库获取数据的操作)
checkid.php

以上就介绍了android+php 使用httpclient提交post的请求,使用json解析响应,包括了gravity,apache,exception,索引,连接数据库方面的内容,希望对php教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息