안드로이드에서 학생 정보를 보내고 php에서 받아 서버로 등록하려 하는데 잘안되서 질문드립니다.
php에서 jsonArray를 테스트하기 위해 주석 처리한 부분으로 처리시 서버에 잘 등록되는데 안드로이드와 연동시 작동하질 않습니다.
StringRequest stringrequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try{
JSONObject jResponse = new JSONObject(response.substring(response.indexOf("{"), response.lastIndexOf("}") + 1));
boolean success = jResponse.getBoolean("success");
if(success) {
finish();
}else{
AlertDialog.Builder builder = new AlertDialog.Builder(ReservationActivity.this);
AlertDialog dialog = builder.setMessage("신청이 되지 않았습니다.\n다시 등록해주세요.")
.setNegativeButton("확인", null).create();
dialog.show();
}
}catch(JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("mytest", error.toString());
}
}) {
protected Map<String, String> getParams() throws AuthFailureError {
/*String temp = "";
for(int i=0; i < list.size(); i++){
if(!temp.equals("")){
temp = temp + ",";
}
temp = temp + "{\"name\""+":"+"\""+list.get(i).getName()+"\""+","
+"\"id\""+":"+"\""+list.get(i).getID()+"\""+"}";
}
String complete = "["+temp+"]";*/
JSONArray jArray;
try {
jArray = new JSONArray();//배열이 필요할때
for (int i = 0; i < list.size(); i++) {
JSONObject sObject = new JSONObject();//배열 내에 들어갈 json
sObject.put("name", list.get(i).getName());
sObject.put("id", list.get(i).getID());
jArray.put(sObject);
}
complete = jArray.toString();
Log.d("JSON Test", jArray.toString());
} catch (JSONException e) {
e.printStackTrace();
}
Map<String, String> parameters = new HashMap<>();
parameters.put("reserveID", reserveID);
parameters.put("reserveDate", reserveDate);
parameters.put("startTime", startTime);
parameters.put("endTime", endTime);
parameters.put("srID", srID);
parameters.put("studentID", studentID);
parameters.put("companionList", complete);
//Log.d("mytest", complete);
return parameters;
}
};
RequestQueue queue = Volley.newRequestQueue(ReservationActivity.this);
queue.add(stringrequest);
<?php
$con = mysqli_connect("localhost", "root", "apmsetup", "studyroom");
//$companionList = '[{"name":"홍길동","id":"2019000001"},{"name":"홍지은","id":"2019000002"},{"name":"홍지현","id":"2019000003"}]';
$reserveID = $_POST["reserveID"];
$reserveDate = $_POST["reserveDate"];
$startTime = $_POST["startTime"];
$endTime = $_POST["endTime"];
$srID = $_POST["srID"];
$studentID = $_POST["studentID"];
$companionList = $_POST["companionList"];
$new_array = json_decode($companionList, true);
foreach($new_array as $row){
$statement = mysqli_prepare ($con, "INSERT INTO reserveinfo(name, studentID, reserveID) VALUES (?,?,?)");
mysqli_stmt_bind_param($statement, "sss", $row['name'], $row['id'], $reserveID);
mysqli_stmt_execute($statement);
}
$statement = mysqli_prepare ($con, "INSERT INTO reservelist(reserveID, reserveDate, startTime, endTime, srID, studentID) VALUES (?,?,?,?,?,?)");
mysqli_stmt_bind_param($statement, "ssssss", $reserveID, $reserveDate, $startTime, $endTime, $srID, $studentID);
mysqli_stmt_execute($statement);
$response = array();
$response["success"] = true;
echo json_encode($response);
?>