最近在用Android调用Web服务,开始准备用WebService来调用,用jws的WebService方式写好后发现Android调用的时候很多问题不知道咋解决了,后来发现有一个更好的办法,就是采用HttpPost来与后台交互。
下面就说一下相关的JSON的操作:
不得不说,JSON 格式的确是非常美妙的,速度快而且简化了很多操作
在 Android 下,Android SDK 已经为我们封装好了整个与 JSON 有关的操作,使用非常方便
以下就是一个标准的 JSON 请求的实现过程:
HttpPost request = new HttpPost(url);
// 先封装一个 JSON 对象
JSONObject param = new JSONObject();
param.put("name",
"rarnu");
param.put("password",
"123456");
// 绑定到请求 Entry
StringEntity se = new StringEntity(param.toString());
request.setEntity(se);
// 发送请求
HttpResponse httpResponse = new DefaultHttpClient().execute(request);
// 得到应答的字符串,这也是一个 JSON 格式保存的数据
String retSrc = EntityUtils.toString(httpResponse.getEntity());
// 生成 JSON 对象
JSONObject result = new JSONObject( retSrc);
String token = result.get("token");
发送Json请求,结果返回Json.
- public static JSONObject post(String url,JSONObject json){
- HttpClient client = new DefaultHttpClient();
- HttpPost post = new HttpPost(url);
- JSONObject response = null;
- try {
- StringEntity s = new StringEntity(json.toString());
- s.setContentEncoding("UTF-8");
- s.setContentType("application/json");
- post.setEntity(s);
- HttpResponse res = client.execute(post);
- if(res.getStatusLine().getStatusCode() == HttpStatus.OK.value()){
- HttpEntity entity = res.getEntity();
- String charset = EntityUtils.getContentCharSet(entity);
- response = new JSONObject(new JSONTokener(new InputStreamReader(entity.getContent(),charset)));
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
-