无法从php mysql检索数据到android活动 [英] Cannot Retrieve data from php mysql to android activity
问题描述
新的Android编程。所以这里的问题。
我目前使用一个php框架codeigniter从mysql查询我的数据。当我在浏览器中键入URL时,我看到我的json数据。但是当我检索它在我的Android活动,它返回null。
这里是我的代码。
php code
Im new to android programming. So here's the problem. I am currently using a php framework codeigniter to query my data from mysql. When i type the url in my browser i see my json data. But when i retrieving it in my android activity it returns null. Here is my code. php code
function getdrug(){
$id = $_GET['letter'];
//echo $_GET['letter'];
header('Content-type: application/json');
if($id == 'a'){
$this->db->like('Generic_Name','A');
$value['Drugs'] = $this->db->get('drugs')->result();
echo json_encode($value);
}
}
我的Android活动
my android activity
ListView lv;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String URL = "http://emedteam-001-site1.ctempurl.com/emed/home/getdrug?letter=a";
jsonobject = JSONfunctions.getJSONfromURL(URL);
Toast.makeText(getApplicationContext(),URL + "\n" +jsonobject, Toast.LENGTH_LONG).show(); }
});
my JSONfunctions
my JSONfunctions
public class JSONfunctions {
public static JSONObject getJSONfromURL(final String URL){
InputStream is = null;
String result = "";
String params = "";
JSONObject jArray = null;
try{
HttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
HttpGet httpget = new HttpGet(URL);
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}
catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
}
//Convert
try {
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();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
//parse json data
try {
jArray = new JSONObject(result);
System.out.print(jArray);
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
return jArray;
}
}
这里是我的网址链接< a href =http://emedteam-001-site1.ctempurl.com/emed/home/getdrug?letter=a =nofollow> http://emedteam-001-site1.ctempurl.com/emed/ home / getdrug?letter = a
推荐答案
HTTPClient已弃用,因此您应避免使用。查看此 HttpClient已弃用(android studio,Target = api 22)
HTTPClient is deprecated so you should avoid it. Look at this HttpClient is deprecated (android studio, Target=api 22)
这是我从json获取内容的工作函数
This is my working function to get content from json
public static JSONObject getJSONfromURL(final String URL){
JSONObject jArray = null;
try {
//URL = "http://emedteam-001-site1.ctempurl.com/emed/home/getdrug?letter=a";
URLConnection conn = new URL(URL).openConnection();
conn.addRequestProperty("Accept", "application/json");
conn.connect();
InputStream is = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
String str = sb.toString();
sb = null;
jArray = new JSONObject(str);
} catch (Exception e) {
e.printStackTrace();
}
return jArray;
}
已编辑:您需要调用此函数内部AsyncTask以避免 android.os.NetworkOnMainThreadException
EDITED: You need to call to this function inside AsyncTask to avoid android.os.NetworkOnMainThreadException
ListView lv;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new StackOverflowTask().execute();
}
});
class StackOverflowTask extends AsyncTask<String, Void, JSONObject> {
protected JSONObject doInBackground(String... urls) {
try {
JSONObject test = JSONfunctions.getJSONfromURL("http://emedteam-001-site1.ctempurl.com/emed/home/getdrug?letter=a");
return test;
} catch (Exception e) {
return null;
}
}
protected void onPostExecute(JSONObject test) {
if(test != null)
Toast.makeText(TestActivity.this, "Hello Stackoverflow ;)",Toast.LENGTH_SHORT).show();
}
}
我希望它有帮助!
这篇关于无法从php mysql检索数据到android活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!