- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题。我正在尝试为 Android
创建一个 REST API
但我的 HttpPost
不起作用。我正在使用 XAMPP
和 Slim 框架
来解决这个问题。
我创建了我的 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
方法并且它工作正常。
提前致谢!
最佳答案
问题是我在 AsyncTask
和 POST
方法中使用了不同的 ID
。
例如,当我试图在我的 POST
方法上检索来 self 的 AsyncTask
的信息时:
$idCar = $app->request->post("idCar");
$name = $app->request->post("name");
$dateCar = $app->request->post("dateCar");
我使用的是 ID
:idCar
、name
和 dateCar
。
但是当我试图将信息发送到我的 AsyncTask
上的 POST
方法时:
BasicNameValuePair idCarValuePair = new BasicNameValuePair("id", newCar.getIdCar());
BasicNameValuePair nameValuePair = new BasicNameValuePair("name", newCar.getName());
BasicNameValuePair dateValuePair = new BasicNameValuePair("date", newCar.getDateBuyCar());
我使用的是 ID
:id
、name
和 date
。
因此 POST
方法无法从 AsyncTask
检索信息,因为我在那里使用的 ID
与 POST
方法。
为了解决这个问题,我必须更改我在 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/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!