[英]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());
}
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.