java - Restful 插入问题 - 如何解决?
问题描述
为了通过测试,我们需要使用一些 web 服务从数据库中获取数据并将它们发送到应用程序以使用它。所有这些工作正常,但我坚持将数据从 android 发送到 web 服务。该网络服务在计算机上运行良好(我可以将带有参数的 url 放在我的 firefox 中,它运行良好并且插入没有问题),但是如果我尝试使用良好的参数调用这个 url 但在我的应用程序中启动它,它不会不做任何事。没有错误(也许我只是没有看到它们,我不熟悉 android studio 调试器)。
private class WebServicePut extends AsyncTask<Void, Void, String>
{
private final String url2 = "http://192.168.1.12:8080/PortPontrieuxWebService/webresources/emplacement/envoyer?nomBateau="+nomDuBateau+"&portBateau="+nomDuPort+"&dateArrivee="+DateDeDepart+"&dateDepart="+DateDeFin+"®lement="+reglement+"&idEmpl="+idEmpl;
@Override
protected void onPreExecute()
{
super.onPreExecute();
Toast.makeText(getApplicationContext(), "Début de requete insert", Toast.LENGTH_LONG).show();
}
@Override
protected String doInBackground(Void... params)
{
try
{
HttpClient c2 = new DefaultHttpClient();
HttpGet req2 = new HttpGet(url2);
req2.addHeader("Accept", "application/json");
req2.addHeader("Content-Type", "application/json");
HttpResponse response = c2.execute(req2);
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String retourneWS = rd.readLine();
return retourneWS;
}
catch (Exception e)
{
return null;
}
}
}
函数调用:
@GET
@Path("envoyer")
public void getJSON(@QueryParam("nomBateau") String pnomBateau,@QueryParam("portBateau") String pNomPort,@QueryParam("dateArrivee") String pdateArrivee,@QueryParam("dateDepart") String pdateDepart,@QueryParam("reglement") String pReglement,@QueryParam("idEmpl") String pIdEmpl)
{
gestionPort.insertEtModif(pnomBateau, pNomPort, pdateArrivee, pdateDepart, pReglement, pIdEmpl);
}
以及“insertEtModif”函数:
public static void insertEtModif(String nomBateau,String nomPort,String dateArrivee,String dateDepart,String reglement,String idEmplacement)
{
try{
CollectionEmplacements = new ArrayList<Emplacement>();
Class.forName(pilote);
conn = DriverManager.getConnection(url,"root","");
stmt = conn.createStatement();
String req = "INSERT INTO `louer` (`nomBateau`, `portBateau`, `dateArrivee`, `dateDepart`, `reglement`, `emplacement_id`,`commentaire`) VALUES ('"+nomBateau+"', '"+nomPort+"', '"+dateArrivee+"', '"+dateDepart+"', '"+reglement+"', '"+idEmplacement+"','');";
System.out.println(req);
int retour2 = stmt.executeUpdate(req);
stmt.close();
conn.close();
conn = DriverManager.getConnection(url,"root","");
stmt = conn.createStatement();
String req2 = "UPDATE `emplacement` SET `disponible` = '1' WHERE `emplacement`.`id` = "+idEmplacement ;
System.out.println(req2);
int retour = stmt.executeUpdate(req2);
stmt.close();
conn.close();
}
catch (SQLException e)
{
System.out.println(e.getMessage());
}
catch (ClassNotFoundException e)
{
System.out.println(e.getMessage());
}
}
我知道我们通常不使用 GET 而是使用 PUT,但它是为了测试 URL 是否正确,并且它直接在浏览器中工作(使用 Firefox 测试)。
解决方案
推荐阅读
- sql - 如何使用 REGEXP-SUBSTR
- ios - 快速从对象数组中删除某些对象
- c# - 如果在 UserControl 上使用 DataTemplate,WPF DependencyProperty OnPropertyChanged 将默认值返回为 NewValue
- apache-kafka - 提交偏移量时,kafka 流会超时
- php - 我已经使用 php 将 csv 导入到表中,但遇到了问题?
- amazon-web-services - 如何在不传递应用程序中的访问密钥和密钥的情况下访问 aws QLDB?
- java - 在 Spring Boot 应用程序中从 mongo db 获取数据,其中要获取的集合名称和字段在运行时是已知的
- c# - NHibernate 多对一映射
- android - 如何在改造标头android中传递String []?
- python-3.x - 如何将系列添加到数据框?