您的位置:首页 > 移动开发 > Android开发

Android访问php webservice-用json等方式。

2013-03-19 11:42 459 查看
如果是PHP做的服务端,而我们要用android去访问,怎么办?当然可以用REST,但也可以用点笨的方法,比如可以让PHP的服务端返回JSON或XML数据,而Android端则可以用APACHE的httpclient去访问。下面是一个例子,假设...
如果是PHP做的服务端,而我们要用android去访问,怎么办?当然可以用REST,但也可以用点笨的方法,比如可以让PHP的服务端返回JSON或XML数据,而Android端则可以用APACHE的httpclient去访问。

下面是一个例子,假设数据表中users表有如下字段(mysql):
idusers,UserName,FullName

加点数据,然后在服务端建立一个webservice1.php,作用是直接返回服务端数据库的数据,如下:

则可以把数据表输出为JSON或者XML格式了,客户端的Android调用:

try
{

HttpParams httpParams =
new
BasicHttpParams();

HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC);

HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);


HttpParams p =
new
BasicHttpParams();


p.setParameter(
"user"
,
"1"
);


HttpClient httpclient =
new
DefaultHttpClient(p);

String url =
"http://10.0.2.2:8082/myphp/phpWebservice/webservice1.php?user=1&format=json"
;

HttpPost httppost =
new
HttpPost(url);


try
{

Log.i(getClass().getSimpleName(),
"send task - start"
);


List nameValuePairs =
new
ArrayList(
2
);

nameValuePairs.add(
new
BasicNameValuePair(
"user"
,
"1"
));

httppost.setEntity(
new
UrlEncodedFormEntity(nameValuePairs));

ResponseHandler responseHandler =
new
BasicResponseHandler();

String responseBody = httpclient.execute(httppost, responseHandler);

// 解析JSON返回的 JSONObject json = new JSONObject(responseBody);

JSONArray jArray = json.getJSONArray(
"posts"
);

ArrayList> mylist =
new
ArrayList>();


for
(
int
i =
0
; i < jArray.length(); i++) {

HashMap map =
new
HashMap();

JSONObject e = jArray.getJSONObject(i);

String s = e.getString(
"post"
);

JSONObject jObject =
new
JSONObject(s);


map.put(
"idusers"
, jObject.getString(
"idusers"
));

map.put(
"UserName"
, jObject.getString(
"UserName"
));

map.put(
"FullName"
, jObject.getString(
"FullName"
));


mylist.add(map);

}

Toast.makeText(
this
, responseBody, Toast.LENGTH_LONG).show();


再搞个webservice2.php,该文件用来接受并保存客户端传送过来的JSON数据。

而Android客户端,可以构造JSON,发送到webservice2.php

try
{

JSONObject json =
new
JSONObject();

json.put(
"UserName"
,
"test2"
);

json.put(
"FullName"
,
"1234567"
);

HttpParams httpParams =
new
BasicHttpParams();

HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC);

HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);

HttpClient client =
new
DefaultHttpClient(httpParams);

String url =
"http://10.0.2.2:8082//myphp/phpWebservice/webservice2.php"
;


HttpPost request =
new
HttpPost(url);

request.setEntity(
new
ByteArrayEntity(json.toString().getBytes(
"UTF8"
)));

request.setHeader(
"json"
, json.toString());

HttpResponse response = client.execute(request);

HttpEntity entity = response.getEntity();


if
(entity !=
null
) {

InputStream instream = entity.getContent();


String result = RestClient.convertStreamToString(instream);

Log.i(
"Read from server"
, result);

Toast.makeText(
this
, result,

Toast.LENGTH_LONG).show();

}


这样就可以把Android端发送的数据保存到服务端了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: