弥猫深巷的老先森 2016-05-15 06:08 采纳率: 0%
浏览 1277

android是如何接受web数据的呀

最近在做一个项目,要求android从sqlserver数据库接受数据。已经成功把数据发布到网上,从网上找到相关代码,也能稍微理解一下,但是为什么就是接受不起来呢
不明白到底具体android是如何接受web数据的
下面是代码
package com.example.test2;

import android.app.Activity;
import android.os.Bundle;
import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

import android.widget.TextView;

public class MainActivity extends Activity {

private static final String BASE_URL = "http://localhost:8080/thrid/SQLServerTest";  

 private TextView No1;  
 private TextView No2;  
 private TextView No3;     

 @Override  
 public void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activity_main);  

     setupViews();  
 }         
 /** 
  * 初始化 
  */  
 private void setupViews(){  
     No1 = (TextView)findViewById(R.id.textView1);  
     No2 = (TextView)findViewById(R.id.textView2); 
     No3 = (TextView)findViewById(R.id.textView3);

     try {  
         //获取后台返回的Json对象  
         JSONObject mJsonObject = JSONUtil.getJSON(BASE_URL);  
         No1.setText("获取成功!");  //测试
         JSONArray mJsonArray = mJsonObject.getJSONArray("student");              
         JSONObject firstStudent = mJsonArray.getJSONObject(0);  

         JSONObject secondStudent = mJsonArray.getJSONObject(1);

         JSONObject thridStudent = mJsonArray.getJSONObject(2);

         int first_id = firstStudent.getInt("id");
         String first_name = firstStudent.getString("name");
         int first_value = firstStudent.getInt("value");

         int second_id = secondStudent.getInt("id");
         String second_name = secondStudent.getString("name");
         int second_value = secondStudent.getInt("value");

         int thrid_id = thridStudent.getInt("id");
         String thrid_name = thridStudent.getString("name");
         int thrid_value = thridStudent.getInt("value");

         No1.setText("id:"+first_id+",name:"+first_name+",value:"+first_value);  
         No2.setText("id:"+second_id+",name:"+second_name+",value:"+second_value);  
         No3.setText("id:"+thrid_id+",name:"+thrid_name+",value:"+thrid_value);
     } catch (JSONException e) {  
         e.printStackTrace();  
     } catch (Exception e) {  
         e.printStackTrace();  
     }  
 }         

}


package com.example.test2;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.UnsupportedEncodingException;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.params.BasicHttpParams;

import org.apache.http.protocol.HTTP;

import org.json.JSONException;

import org.json.JSONObject;

import android.util.Log;

/**

  • @author frankiewei.
  • Json封装的工具类.
    */

    public class JSONUtil {

    private static final String TAG = "JSONUtil";

    /**

    • 获取json内容
    • @param url
    • @return JSONArray
    • @throws JSONException
    • @throws ConnectionException

      */

      public static JSONObject getJSON(String url) throws JSONException, Exception {

      return new JSONObject(getRequest(url));

      }

      /**

    • 向api发送get请求,返回从后台取得的信息。

    • @param url

    • @return String
      */

      protected static String getRequest(String url) throws Exception {

      return getRequest(url, new DefaultHttpClient(new BasicHttpParams()));

      }

      /**

    • 向api发送get请求,返回从后台取得的信息。

    • @param url

    • @param client

    • @return String
      */

      protected static String getRequest(String url, DefaultHttpClient client) throws Exception {

      String result = null;

      int statusCode = 0;

      HttpGet getMethod = new HttpGet(url);

      Log.d(TAG, "do the getRequest,url="+url+"");

      try {

      //getMethod.setHeader("User-Agent", USER_AGENT);

       HttpResponse httpResponse = client.execute(getMethod);  
       //statusCode == 200 正常  
       statusCode = httpResponse.getStatusLine().getStatusCode();  
       Log.d(TAG, "statuscode = "+statusCode);  
       //处理返回的httpResponse信息  
       result = retrieveInputStream(httpResponse.getEntity());  
      

      } catch (Exception e) {

      Log.e(TAG, e.getMessage());

      throw new Exception(e);

      } finally {

      getMethod.abort();

      }

      return result;

      }

      /**

    • 处理httpResponse信息,返回String

    • @param httpEntity

    • @return String
      */

      protected static String retrieveInputStream(HttpEntity httpEntity) {

      int length = (int) httpEntity.getContentLength();

      if (length < 0) length = 10000;

      StringBuffer stringBuffer = new StringBuffer(length);

      try {

      InputStreamReader inputStreamReader = new InputStreamReader(httpEntity.getContent(), HTTP.UTF_8);

      char buffer[] = new char[length];

      int count;

      while ((count = inputStreamReader.read(buffer, 0, length - 1)) > 0) {

      stringBuffer.append(buffer, 0, count);

      }

      } catch (UnsupportedEncodingException e) {

      Log.e(TAG, e.getMessage());

      } catch (IllegalStateException e) {

      Log.e(TAG, e.getMessage());

      } catch (IOException e) {

      Log.e(TAG, e.getMessage());

      }

      return stringBuffer.toString();

      }

      }

      大家知道怎么回事吗

  • 写回答

2条回答 默认 最新

  • 东风玖哥 2016-05-15 06:18
    关注

    http或socket

    评论

报告相同问题?

悬赏问题

  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法