gpt4 book ai didi

php - 为什么我的 HttpPost 不起作用?

转载 作者:行者123 更新时间:2023-11-28 23:54:59 26 4
gpt4 key购买 nike

我有一个问题。我正在尝试为 Android 创建一个 REST API 但我的 HttpPost 不起作用。我正在使用 XAMPPSlim 框架 来解决这个问题。

我创建了我的 POST 方法,我想在其中添加一个新的 Car 到表 cars

我的 Car 对象的构造函数是:

public Car(int idCar, String name, Date dateBuyCar)
{
this.idCar = idCar;
this.name = name;
this.dateBuyCar = dateBuyCar;
}

我的 POST 方法与 Slim 就像:

$app->post("/cars/",function() use($app)
{
$idCar = $app->request->post("idCar");
$name = $app->request->post("name");
$dateCar = $app->request->post("dateCar");

try{
$connection = getConnection();
$dbh = $connection->prepare("INSERT INTO cars VALUES(?,?,?)");
$dbh->bindParam(1,$idCar);
$dbh->bindParam(2,$name);
$dbh->bindParam(3,$dateCar);

$dbh->execute();
$cars = $connection->lastInsertId();
$connection = null;

header("HTTP/1.1 200");
header("Content-Type:application/json; charset=utf-8");
echo json_encode($cars,JSON_UNESCAPED_UNICODE );

}catch(PDOException $e)
{
echo "Error: " . $e->getMessage();
}
});

我的 HttpPost 方法如下:

class addCarDatabase extends AsyncTask<Void, Integer, Void> {

private Car newCar;

addCarDatabase(Car newCar)
{
this.newCar = newCar;
}

protected void onPreExecute(){
}

protected Void doInBackground(Void... params) {

String date = null;

date = new SimpleDateFormat("yyyy-MM-dd").format(newCar.getDate());

String url = "http://IP of my computer/project/cars/";

HttpClient httpClient = new DefaultHttpClient();

HttpPost method = new HttpPost(url);

BasicNameValuePair idCarValuePair = new BasicNameValuePair("id", newCar.getIdCar());
BasicNameValuePair nameValuePair = new BasicNameValuePair("name", newCar.getName());
BasicNameValuePair dateValuePair = new BasicNameValuePair("date", newCar.getDateBuyCar());


List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();

nameValuePairList.add(idCarValuePair);
nameValuePairList.add(nameValuePair);
nameValuePairList.add(dateValuePair);

try{

UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(nameValuePairList);
method.setEntity(urlEncodedFormEntity);

} catch (UnsupportedEncodingException uee) {
System.out.println("An Exception given because of UrlEncodedFormEntity argument :" + uee);
uee.printStackTrace();
}

try {
HttpResponse response = httpClient.execute(method);
Log.d("Response", response.toString());
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

protected void onProgressUpdate(){
}

protected void onPostExecute(){
}
}

在我的 MySQL 数据库中(我使用 phpmyadmin 来管理它)我有三列,每列代表新 Car 的一个属性 我想添加:

--> id(int)
--> name(String)
--> dt(date)

我认为问题是因为我的对象中有一个 Date 但我对此并不安全。我认为这可能是问题所在,因为我看到 phpmyadmin 中的日期存储为 2010-12-06,当我使用我的应用程序时,我需要像 这样的日期>06-12-2010 所以在应用程序中我解析了它。我再次解析它以使用 phpmyadmin 中的格式输入新 Car 的日期(就像您在 AsyncTask 中看到的那样) .

我知道所有信息都正确地传到了 AsyncTask 因为我用一些 Logs 检查了它但是当它到达 HttpPost 时什么也没有发生。

可能是什么问题?

P.S:我知道使用 XAMPP 连接到数据库是正确的,因为我创建了一个 GET 方法并且它工作正常。

提前致谢!

最佳答案

问题是我在 AsyncTaskPOST 方法中使用了不同的 ID

例如,当我试图在我的 POST 方法上检索来 self 的 AsyncTask 的信息时:

$idCar = $app->request->post("idCar");
$name = $app->request->post("name");
$dateCar = $app->request->post("dateCar");

我使用的是 ID:idCarnamedateCar

但是当我试图将信息发送到我的 AsyncTask 上的 POST 方法时:

BasicNameValuePair idCarValuePair = new BasicNameValuePair("id", newCar.getIdCar());
BasicNameValuePair nameValuePair = new BasicNameValuePair("name", newCar.getName());
BasicNameValuePair dateValuePair = new BasicNameValuePair("date", newCar.getDateBuyCar());

我使用的是 ID:idnamedate

因此 POST 方法无法从 AsyncTask 检索信息,因为我在那里使用的 IDPOST 方法。

为了解决这个问题,我必须更改我在 AsyncTask 上发送的信息中的 ID。代码将如下所示:

BasicNameValuePair idCarValuePair = new BasicNameValuePair("idCar", newCar.getIdCar());
BasicNameValuePair nameValuePair = new BasicNameValuePair("name", newCar.getName());
BasicNameValuePair dateValuePair = new BasicNameValuePair("dateCar", newCar.getDateBuyCar());

关于php - 为什么我的 HttpPost 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31923817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com