简体   繁体   English

如何从php服务器获取json数据到android mobile

[英]how to get json data from php server to android mobile

I am having an application in which I want to get json data from a php web server to android mobile.我有一个应用程序,我想在其中从 php web 服务器获取 json 数据到 android 移动设备。 What I am having is a URL and hitting that URL gives me the json data like我拥有的是一个 URL,点击该 URL 会给我 json 数据,例如
{"items":[{"latitude":"420","longitude":"421"}]} . {"items":[{"latitude":"420","longitude":"421"}]} But I want to retrieve this json format in my android mobile and get the values of latitude and longitude from json format.但我想在我的 android 手机中检索这种 json 格式,并从 json 格式中获取纬度和经度的值。

How can we get that on android mobile..?我们怎样才能在安卓手机上得到它……?

Thanks in advance..提前致谢..

First do URL Connection首先做 URL 连接

String parsedString = "";

    try {

        URL url = new URL(yourURL);
        URLConnection conn = url.openConnection();

        HttpURLConnection httpConn = (HttpURLConnection) conn;
        httpConn.setAllowUserInteraction(false);
        httpConn.setInstanceFollowRedirects(true);
        httpConn.setRequestMethod("GET");
        httpConn.connect();

        InputStream is = httpConn.getInputStream();
        parsedString = convertinputStreamToString(is);

    } catch (Exception e) {
        e.printStackTrace();
    }

JSON String JSON 字符串

{
"result": "success",
"countryCodeList":
[
  {"countryCode":"00","countryName":"World Wide"},
  {"countryCode":"kr","countryName":"Korea"}
] 
}

Here below I am fetching country details下面我正在获取国家详细信息

JSONObject json = new JSONObject(jsonstring);
JSONArray nameArray = json.names();
JSONArray valArray = json.toJSONArray(nameArray);

JSONArray valArray1 = valArray.getJSONArray(1);

valArray1.toString().replace("[", "");
valArray1.toString().replace("]", "");

int len = valArray1.length();

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

 Country country = new Country();
 JSONObject arr = valArray1.getJSONObject(i);
 country.setCountryCode(arr.getString("countryCode"));                        
 country.setCountryName(arr.getString("countryName"));
 arrCountries.add(country);
}




public static String convertinputStreamToString(InputStream ists)
        throws IOException {
    if (ists != null) {
        StringBuilder sb = new StringBuilder();
        String line;

        try {
            BufferedReader r1 = new BufferedReader(new InputStreamReader(
                    ists, "UTF-8"));
            while ((line = r1.readLine()) != null) {
                sb.append(line).append("\n");
            }
        } finally {
            ists.close();
        }
        return sb.toString();
    } else {
        return "";
    }
}
  String jsonStr = '{"menu": {' + 
        '"id": "file",' + 
        '"value": "File",' + 
        '"popup": {' + 
          '"menuitem": [' + 
            '{"value": "New", "onclick": "CreateNewDoc()"},' + 
            '{"value": "Open", "onclick": "OpenDoc()"},' + 
            '{"value": "Close", "onclick": "CloseDoc()"}' + 
          ']' + 
        '}' + 
      '}}'; 

That JSON string is actually from http://json.org/example.html .该 JSON 字符串实际上来自http://json.org/example.html It was the best one I could find for this given example.对于这个给定的例子,这是我能找到的最好的。

Now that we have that in place, lets start using JSONObject .现在我们已经准备就绪,让我们开始使用JSONObject You will need the following import for this to work: import org.json.JSONObject;您将需要以下导入才能工作: import org.json.JSONObject;

JSONObject jsonObj = new JSONObject(jsonStr); 

With that instantiated, we can do the following to retreive different pieces of data from the JSON string -实例化后,我们可以执行以下操作以从 JSON 字符串中检索不同的数据片段 -

  // grabbing the menu object 
 JSONObject menu = jsonObj.getJSONObject("menu"); 


Reading  =========>  HttpResponse response = httpclient.execute(httppost); 
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) 
                {
                    sb.append(line + "\n");
                }
                is.close();
                result=sb.toString();=======>Here result is the json string


 // these 2 are strings 
 String id = menu.getString("id"); 
 String value = menu.getString("value"); 

 // the popop is another JSON object 
 JSONObject popup = menu.getJSONObject("popup"); 

 // using JSONArray to grab the menuitems from under popop 
  JSONArray menuitemArr = popupObject.getJSONArray("menuitem");  

 // lets loop through the JSONArray and get all the items 
 for (int i = 0; i < menuitemArr.length(); i++) { 
// printing the values to the logcat 
Log.v(menuitemArr.getJSONObject(i).getString("value").toString()); 
Log.v(menuitemArr.getJSONObject(i).getString("onclick").toString()); 
}

For a easy Example click here一个简单的例子点击这里

send a Request from your Android client从您的 Android 客户端发送请求

public static JSONObject getJSONFromHttpPost(String URL) {

    try{
    // Create a new HttpClient and Post Header
    DefaultHttpClient httpclient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(URL);
    String resultString = null;




        long t = System.currentTimeMillis();
        HttpResponse response = (HttpResponse) httpclient.execute(httpPost);
        System.out.println("HTTPResponse received in [" + (System.currentTimeMillis()-t) + "ms]");
        // Get hold of the response entity (-> the data):
        HttpEntity entity = response.getEntity();

        if (entity != null) {
            // Read the content stream
            InputStream instream = entity.getContent();

            // convert content stream to a String
            resultString= convertStreamToString(instream);
            instream.close();
            System.out.println("result String : " + resultString);
            //resultString = resultString.substring(1,resultString.length()-1); // remove wrapping "[" and "]"
            System.out.println("result String : " + resultString);
            // Transform the String into a JSONObject
            JSONObject jsonObjRecv = new JSONObject(resultString);
            // Raw DEBUG output of our received JSON object:
            System.out.println("<JSONObject>\n"+jsonObjRecv.toString()+"\n</JSONObject>");


            return jsonObjRecv;
        }
        }catch(Exception e){e.printStackTrace();}


        return null;

} }

here is the function to convert the string这是转换字符串的函数

private static String convertStreamToString(InputStream is) {

    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line ="";
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return sb.toString();
}

now all you have to do is echo your string in JSON format on the server现在你所要做的就是在服务器上以 JSON 格式echo显你的字符串

Use something like:使用类似的东西:

try {
    HttpParams params = new BasicHttpParams();
    HttpConnectionParams.setSoTimeout(params, 0);
    HttpClient httpClient = new DefaultHttpClient(params);

    //prepare the HTTP GET call 
    HttpGet httpget = new HttpGet(urlString);
    //get the response entity
    HttpEntity entity = httpClient.execute(httpget).getEntity();

    if (entity != null) {
        //get the response content as a string
        String response = EntityUtils.toString(entity);
        //consume the entity
        entity.consumeContent();

        // When HttpClient instance is no longer needed, shut down the connection manager to ensure immediate deallocation of all system resources
        httpClient.getConnectionManager().shutdown();

        //return the JSON response
        JSONObject object = new JSONObject(response.trim());
        JSONArray jsonArray = object.getJSONArray("items");
        if(jsonArray != null) {
           for(int i = 0 ; i < jsonArray.length() ; i++) {
                JSONObject object1 = (JSONObject) jsonArray.get(i); 
                String latitude = object1.getString("latitude");
                String longitude = object1.getString("longitude");
           }
        } 
    }
}catch (Exception e) {
    e.printStackTrace();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM