Android访问php webservice-用json等方式。
如果是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);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端发送的数据保存到服务端了

浙公网安备 33010602011771号