간단한 POST 요청을 사용하여 MySQL 데이터베이스에 몇 가지 기본 정보를 추가하려고 시도했지만 많은 행운이없는 것 같습니다. 튜플을 추가하지 않습니다 데이터베이스에. 나는이 코드가 요청한 PHP 파일을 실행한다는 것을 알고있다. PHP 파일에 거짓 정보를 추가하도록 지시 한 것처럼 작동하지만, 정상적으로 작동하지만 POST 문자열의 정보는 추가되지 않는다. 여기 Java 및 PHP POST 요청이 작동하지 않습니다.
내 자바 파일입니다public class Test {
public static void main(String[] args) {
int id = 3696;
String name = "David";
int steps = 6989;
String strData = encode(id, name, steps);
submit(strData);
}
public static String encode(int id, String name, int steps) {
String strToSend;
try
{
strToSend = URLEncoder.encode("id", "UTF-8") + "=";
strToSend += URLEncoder.encode("" + id, "UTF-8");
strToSend += "&" + URLEncoder.encode("name", "UTF-8") + "=";
strToSend += URLEncoder.encode(name, "UTF-8");
strToSend += "&" + URLEncoder.encode("steps", "UTF-8") + "=";
strToSend += URLEncoder.encode("" + steps, "UTF-8");
}
catch (Exception e) {
return "Error encoding data for submission";
}
return strToSend;
}
public static String submit(String strToSend) {
URL urlDest;
String strData = strToSend;
System.out.println(strData);
HttpURLConnection ucConnect;
try
{
urlDest = new URL("http://localhost/~David/posttest.php");
}
catch (Exception e)
{
return "Error in submitting entry";
}
try
{
ucConnect = (HttpURLConnection) urlDest.openConnection();
ucConnect.setRequestProperty("Content-type","application/x-www-form-urlencoded");
ucConnect.setRequestMethod("POST");
ucConnect.setDoOutput(true);
}
catch (Exception e)
{
return "Error in connecting to URL";
}
try
{
OutputStreamWriter streamWrite = new OutputStreamWriter(ucConnect.getOutputStream());
streamWrite.write(strData);
System.out.println(streamWrite.toString());
streamWrite.flush();
//Get the response
ucConnect.getInputStream();
System.out.println(ucConnect);
streamWrite.close();
}
catch (Exception e)
{
return "Problem";
}
System.out.println("SUCCESS");
return "Yay!";
}
}
그리고 여기 posttest.php의
<?php
$con=mysqli_connect(removed);
//check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$id = $_POST["id"];
$strName = $_POST["name"];
$noSteps = $_POST["steps"];
mysqli_query ($con, "INSERT INTO People VALUES ($id, $strName, $noSteps)" || die();
mysqli_close($con);
echo json_encode($arr);
?>
내가 보내고있다 문자열의 인쇄 형식은 다음과 같습니다
id=3696&name=David&steps=6989
감사합니다. 도움.
요청'아이디의이 유형 = 3696 & 이름 = 데이비드 & 단계 = 6989'은'GET' 아닌 오며 'Post –
입니다 수행합니다'위해서 var_dump ($ _ POST); '실제로 데이터를 보내고 있는지 확인하십시오. 또한 데이터가 나중에 사용자가 제공하게 될 경우 걱정할 SQL 주입 문제가 있습니다. – PeeHaa
@SteAp - OP 코드를 수정하는 것은 아닙니다. 되돌려주세요. –