Android JSON到PHP服务器
我正在尝试将所有数据从SQLite发送到PHP MySQL。我创建了一个JSON对象来向PHP发送数据。我在PHP端没有收到任何数据 安卓代码Android JSON到PHP服务器,php,android,mysql,json,Php,Android,Mysql,Json,我正在尝试将所有数据从SQLite发送到PHP MySQL。我创建了一个JSON对象来向PHP发送数据。我在PHP端没有收到任何数据 安卓代码 @Override protected String doInBackground(Void... params) { try { String link = "http://localhost/Myapp/course.php"; handler.open(); Cursor c =
@Override
protected String doInBackground(Void... params) {
try {
String link = "http://localhost/Myapp/course.php";
handler.open();
Cursor c = handler.returnData();
if (c.getCount() == 0) {
Toast.makeText(context, "No Data Found", Toast.LENGTH_LONG).show();
}
obj = new JSONObject();
while (c.moveToNext()) {
String cid = c.getString(0);
String name = c.getString(1);
obj.put("cid", Integer.parseInt(cid));
obj.put("cname", name);
}
handler.close();
array = new JSONArray();
array.put(obj);
sendObj = new JSONObject();
sendObj.put("course", array);
String data = sendObj.toString();
URL url = new URL(link);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while ((line = reader.readLine()) != null) {
sb.append(line);
break;
}
return sb.toString();
} catch (MalformedURLException e) {
} catch (UnsupportedEncodingException e) {
} catch (IOException e) {
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
PHP代码有没有其他方法来解码json数据,或者我应该在我的android代码中更改一些内容
<?php
require_once("dbconnect.inc");
$data = array();
$data = json_decode($_POST["course"]);
$cid=$data->cid;
$cname=$data->cname;
mysql_query("insert into COURSE values($cid,$cname)") or die(mysql_error());
?>
您需要为
URlConnection
设置参数
试试这个:
@Override
protected String doInBackground(Void... params) {
try {
String link = "http://localhost/Myapp/course.php";
handler.open();
Cursor c = handler.returnData();
if (c.getCount() == 0) {
Toast.makeText(context, "No Data Found", Toast.LENGTH_LONG).show();
}
obj = new JSONObject();
while (c.moveToNext()) {
String cid = c.getString(0);
String name = c.getString(1);
obj.put("cid", Integer.parseInt(cid));
obj.put("cname", name);
}
handler.close();
array = new JSONArray();
array.put(obj);
sendObj = new JSONObject();
sendObj.put("course", array);
String data = sendObj.toString();
URL url = new URL(link);
URLConnection conn = url.openConnection();
conn.setDoInput (true);
conn.setDoOutput (true);
conn.setUseCaches (false);
conn.setRequestProperty("Content-Type","application/json");
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while ((line = reader.readLine()) != null) {
sb.append(line);
break;
}
return sb.toString();
} catch (MalformedURLException e) {
} catch (UnsupportedEncodingException e) {
} catch (IOException e) {
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
旁注可能重复:您是否希望查询中只有一条结果记录?您正在构建一个JSONArray,但它只包含一个元素。我想将所有数据从SQLite存储到MySQL。这一行显示android studio wr.write(data.getBytes())上的错误;我真的很抱歉我忽略了这里使用的是阅读器而不是流。因此,删除getBytes()部分。现在检查一下。