Php 如何在android中传递值和获取json数据?
我是android新手,我想在我的设备中获取json数据。但当我试图传递值时,我在html格式中遇到未知错误。即使我在php代码中没有使用任何html标记Php 如何在android中传递值和获取json数据?,php,android,json,android-json,Php,Android,Json,Android Json,我是android新手,我想在我的设备中获取json数据。但当我试图传递值时,我在html格式中遇到未知错误。即使我在php代码中没有使用任何html标记 public class Messages2 extends Activity { private String[] navMenuTitles; private TypedArray navMenuIcons; private EditText editTextName; SharedPrefere
public class Messages2 extends Activity {
private String[] navMenuTitles;
private TypedArray navMenuIcons;
private EditText editTextName;
SharedPreferences sp;
private String jsonResult;
private ListView listView;
private Button b;
EditText etname, et;
TextView tv;
String myJSON;
private static final String TAG_RESULTS="result";
private static final String TAG_USERNAME = "username";
private static final String TAG_NAME = "message_recd";
private static final String TAG_ADD ="message_sent";
JSONArray peoples = null;
ArrayList<HashMap<String, String>> personList;
ListView list;
public static final String USER_NAME = "USERNAME";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent = getIntent();
String fName = intent.getStringExtra("fname");
navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
navMenuIcons = getResources().obtainTypedArray(R.array.nav_drawer_icons);
// load icons from
// strings.xml
b=(Button)findViewById(R.id.Button01);
list = (ListView) findViewById(R.id.listView);
personList = new ArrayList<HashMap<String,String>>();
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = getIntent();
String fName = intent.getStringExtra("fname");
getData(fName);
}
});
}
protected void showList(){
try {
JSONArray peoples = new JSONArray(myJSON);
HashMap<String,String> person = new HashMap<String,String>();
Intent intent1 = getIntent();
String fName = intent1.getStringExtra("fname");
person.put(TAG_NAME,fName);
for(int i=0;i<peoples.length();i++){
JSONObject c = peoples.getJSONObject(i);
String name=null, address=null;
if(c.has("message_recd"))
name = c.getString("message_recd");
else if(c.has("message_sent"))
address = c.getString("message_sent");
HashMap<String,String> persons = new HashMap<String,String>();
persons.put(TAG_NAME,name);
persons.put(TAG_ADD,address);
personList.add(persons);
}
ListAdapter adapter = new SimpleAdapter(
Messages2.this, personList, R.layout.list_item,
new String[]{TAG_NAME,TAG_ADD},
new int[]{R.id.name, R.id.address}
);
list.setAdapter(adapter);
} catch (JSONException e) {
Log.i("tagconvertstr", "["+myJSON+"]");
}
}
public void getData(String fName){
class GetDataJSON extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... params) {
String paramUsername = params[0];
DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
HttpPost httppost = new HttpPost("http://10.0.2.2/progress_card/testing.php");
// Depends on your web service
httppost.setHeader("Content-type", "application/json");
InputStream inputStream = null;
String result = null;
try {
Intent intent1 = getIntent();
String fName = intent1.getStringExtra("fname");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("username", fName));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
// json is UTF-8 by default
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
result = sb.toString();
} catch (Exception e) {
Log.i("tagconvertstr", "["+result+"]");
}
finally {
try{if(inputStream != null)inputStream.close();}catch(Exception squish){}
}
return result;
}
@Override
protected void onPostExecute(String result){
myJSON=result;
showList();
}
}
GetDataJSON g = new GetDataJSON();
g.execute(fName);
}
}
公共类消息2扩展活动{
私有字符串[]navMenuTitles;
专用型雷达导航仪;
私有EditText editTextName;
共享参考sp;
私有字符串jsonResult;
私有列表视图列表视图;
专用按钮b;
编辑文本etname,et;
文本视图电视;
字符串myJSON;
私有静态最终字符串标记_RESULTS=“result”;
私有静态最终字符串标记\u USERNAME=“USERNAME”;
私有静态最终字符串标记\u NAME=“message\u recd”;
私有静态最终字符串标记\u ADD=“message\u sent”;
JSONArray-peoples=null;
ArrayList个人主义者;
列表视图列表;
公共静态最终字符串USER\u NAME=“USERNAME”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_秒);
Intent=getIntent();
String fName=intent.getStringExtra(“fName”);
navMenuTitles=getResources().getStringArray(R.array.nav\u抽屉\u项目);
navMenuIcons=getResources().obtainTypedArray(R.array.nav_抽屉图标);
//从中加载图标
//strings.xml
b=(按钮)findViewById(R.id.Button01);
list=(ListView)findViewById(R.id.ListView);
personList=新的ArrayList();
b、 setOnClickListener(新视图。OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent=getIntent();
String fName=intent.getStringExtra(“fName”);
获取数据(fName);
}
});
}
受保护的无效显示列表(){
试一试{
JSONArray peoples=新的JSONArray(myJSON);
HashMap person=新建HashMap();
Intent intent1=getIntent();
字符串fName=intent1.getStringExtra(“fName”);
人员名称(标签名称、fName);
对于(inti=0;i,您的url需要只返回json响应,否则它将无法在android中解析。
只有此部分必须作为响应返回:
[{"message_recd":""},{"message_recd":""}]
你的url没有返回json数据,而是返回一个html页面。请看一些示例,我必须将值传递给url,而不仅仅是我将获得json。我使用namevaluespair传递值,当我执行代码时,我得到的是html代码。作为响应获取html页面是我的php代码中的一个错误吗?我没有定义任何错误html标记我必须传递值,而不仅仅是我将获得json…..为此,我使用了namevaluepairs来传递值,但作为响应,我得到了这个错误。首先检查您编写的查询是否返回所需的值,并尝试将其编码为json。我认为您的php代码中存在一些问题。我检查了$username通过编写用户名并获得用户的json格式,,,我认为值并没有从android传递到php
<?php
define('HOST','localhost');
define('USER','root');
define('PASS','');
define('DB','progress_card');
$con = mysqli_connect(HOST,USER,PASS,DB);
$username = $_POST['username'];
$sql1 = "select * from student_detail where parentusername='".$username."'";
$res1 = mysqli_query($con,$sql1);
$row1=mysqli_fetch_array($res1);
$cl=$row1['class']."-".$row1['section'];
$sql2="select * from teachers where classassign='$cl'";
$res2 = mysqli_query($con,$sql2);
$row2=mysqli_fetch_array($res2);
$to=$row2['email'];
$from=$row1['parentemail'];
$result = array();
$sql = "select * from messages where to_email='".$to."' and from_email='".$from."'";
$res = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($res))
{
array_push($result,array('message_recd'=>$row['message']));
}
$sqlw = "select * from messages where from_email='".$to."' and to_email='".$from."'";
$resw = mysqli_query($con,$sqlw);
while($row5 = mysqli_fetch_array($resw))
{
array_push($result,array('message_sent'=>$row5['message']));
}
if(mysqli_query($con,$sql))
{
// echo 'success';
}
else
{
//echo 'failure';
}
//array_push($result,array('message_sent'=>"dfdsghdfgddfgdsd"));
//array_push($result,array('message_sent'=>"sfdsflkufhskfhdskjfsfssadfadsffsafasfsfsadfafsaf"));
//array_push($result,array('message_recd'=>$row1['parentemail'],'message_sent'=>$row2['email']));
echo json_encode($result);
mysqli_close($con);
?>
[{"message_recd":""},{"message_recd":""}]