今天算是完成手头上一个项目的最后一部分功能了,就是与PHP服务器的json交互,都说json很简单方便,但在php上还是有那么一些坑的
直接上代码
HttpClient httpClient = new DefaultHttpClient();
String Url = "http://10.30.24.207:80/music/1.php";
//设置连接超时和读取超时时间
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 9000);
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 9000);
try {//这里我创建了json对象jo,jo2,并创建了json数组
jo = new JSONObject();
jo.put("name", "test");
JSONObject jo2 = new JSONObject();
jo.put("name", "test2");
ja = new JSONArray();
ja.put(jo);
ja.put(jo2);
}catch (Exception e){
}
HttpPost httpRequst = new HttpPost(validateUrl);
List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
params.add(new BasicNameValuePair("userJson",jo.toString()));//这里就是将jsonObject的jo加入到参数中,这里也可以改成jasonArray
try
{
//添加实体
httpRequst.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
//执行请求得到响应
HttpResponse response = httpClient.execute(httpRequst);
//由返回值是否为200判断结果是否成功
if(response.getStatusLine().getStatusCode() == 200)
{
//利用StringBuilder解析返回的数据
StringBuilder builder = new StringBuilder();
BufferedReader buffer = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
for(String s =buffer.readLine(); s!= null; s = buffer.readLine())
{
builder.append(s);
}
System.out.println(builder.toString());
JSONObject jsonObject = new JSONObject(builder.toString());//将返回的数据转化为jsonObject
userName = jsonObject.getString("user_id");//这里的user_id是我的php服务器发回的数据
}
} catch (Exception e)
{
e.printStackTrace();
}
将上面的代码包装成函数就可以用了。Android有个小要求,就是网络访问操作不能放在主线程中,所以必须要在新加的子线程中运行。就到这里了
我是菜鸟,多多指教