I want to get data from url. in this case I've got complete php that data convert to json already and run in localhost (http://localhost/adchara1/index.php/?year=1)
This is the php script
<?php
mysql_connect("localhost","root","");
mysql_select_db("test");
$q=mysql_query("SELECT * FROM people
WHERE
birthyear>'".$_REQUEST['year']."'");
while($e=mysql_fetch_assoc($q))
$output[]=$e;
print(json_encode($output));
mysql_close(); ?>
and this is result
[{"id":"1","name":"kongkea","sex":"1","birthyear":"1990"}, {"id":"2","name":"thida","sex":"0","birthyear":"2000"}]?>
I want to use button click and show this result in textview
public class MainActivity extends Activity {
AsyncTask<Void, Void, Void> mTask;
String jsonString;
String url = "https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=50cent&count=2";
Button b;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getActionBar().setDisplayHomeAsUpEnabled(true);
b = (Button) findViewById(R.id.btnFetch);
final TextView tv = (TextView) findViewById(R.id.txtView);
mTask = new AsyncTask<Void, Void, Void> () {
@Override
protected Void doInBackground(Void... params) {
try {
jsonString = getJsonFromServer(url);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
tv.setText(jsonString);
}
};
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mTask.execute();
}
});
}
public static String getJsonFromServer(String url) throws IOException {
BufferedReader inputStream = null;
URL jsonUrl = new URL(url);
URLConnection dc = jsonUrl.openConnection();
dc.setConnectTimeout(5000);
dc.setReadTimeout(5000);
inputStream = new BufferedReader(new InputStreamReader(
dc.getInputStream()));
// read the JSON results into a string
String jsonResult = inputStream.readLine();
return jsonResult;
}
}
After Getting jsonString from server with this method, you can parse and show the data in the Json.
EDIT: You get error because you are trying to get json from server out of async task.You need to do it in the background. You can either use a thread or use AsyncTask.
Write this code in your Button OnClickListener
try {
String url = "http://YourIPAddress/adchara1/index.php/?year=1";
HttpPost httppost = new HttpPost(url);
try {
HttpParams p = new BasicHttpParams();
HttpClient httpclient = new DefaultHttpClient(p);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httppost,
responseHandler);
JSONArray jArray = new JSONArray(responseBody);
String text="";
for (int i = 0; i < jArray.length(); i++) {
JSONObject e = jArray.getJSONObject(i);
text = text + "ID : "+e.getString("id")+"\n";
text = text + "Name : "+e.getString("name")+"\n";
text = text + "Sex : "+e.getString("sex")+"\n";
text = text + "Birthyear : "+e.getString("birthyear")+"\n";
}
Textview.setText(text);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (Throwable t) {
Toast.makeText(this, "Request failed: " + t.toString(),
Toast.LENGTH_LONG).show();
t.printStackTrace();
}
If you have any clarifications notify me
Button button =(Button) findViewById(R.id.button);
TextView tv =(TextView) findViewById(R.id.textview);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String result = connectionFromServer("http://localhost/adchara1/index.php/?year=1");
tv.setText(result);
}
});
public static String connectionFromServer(String url) throws IOException {
BufferedReader inputStream = null;
URL myurl = new URL(url);
URLConnection dc = myurl.openConnection();
dc.setConnectTimeout(5000);
dc.setReadTimeout(5000);
inputStream = new BufferedReader(new InputStreamReader(
dc.getInputStream()));
// read the JSON results into a string
String result = inputStream.readLine();
return result;
}
This will display result in textview.
You should simply do a get request using HttpClient and turn the string into Json Array, using the JSONArray object.
http://developer.android.com/reference/org/apache/http/client/HttpClient.html
http://developer.android.com/reference/org/json/JSONArray.html