我正在JSP中开发一个Web应用程序。对于同一个项目,我正在开发一款Android应用。 Web应用程序使用Apache Tomcat和MySQL。现在我想通过从MySQL数据库中检索数据从Android应用程序登录。但是如何?
我找到了很多教程,但都使用PHP脚本。我正在为两个应用程序使用Eclipse。
答案 0 :(得分:0)
客户端(您的Android应用)与服务器之间的耦合是松散耦合的,这意味着除了与之通信的协议之外,它们之间没有任何关联,对于Web服务是HTTP。
通常,客户端(应用程序或Web浏览器)发出HTTP请求,使用POST或GET方法发送参数(例如登录名,密码)。服务器接受这些参数并根据需要处理它们。
这可能听起来很明显,但你说所有教程都使用的是php脚本,所以你似乎很困惑:你的问题在Android上?或者是您在服务器中的问题?
您的Android应用程序所需的代码完全相同,无论服务器技术(asp,cgi,jsp,php ...)和数据库(MySql,Oracle ...),因为HTTP协议是标准的。
这是我从here复制的示例,用于生成带有两个POST参数的简单HTTP请求。
public void postData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "12345"));
nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
答案 1 :(得分:0)
对于Android试试这个。
private static HttpClient getHttpClient() {
if (mHttpClient == null) {
mHttpClient = new DefaultHttpClient();
final HttpParams params = mHttpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, HTTP_TIMEOUT);
HttpConnectionParams.setSoTimeout(params, HTTP_TIMEOUT);
ConnManagerParams.setTimeout(params, HTTP_TIMEOUT);
}
return mHttpClient;
}
然后
public static String sendFirst(String requestString) throws Exception {
BufferedReader in = null;
try {
HttpClient client = getHttpClient();
HttpPost request = new HttpPost(universal_URL_MENU+"?request_menu="+start_menu);
HttpResponse response = client.execute(request);
System.out.println("response in class"+response);
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");
while ((line = in.readLine()) != null) {
sb.append(line + NL);
}
in.close();
result = sb.toString();
// }
}catch(Exception e){
e.printStackTrace();
System.out.println("catch");
}
finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
}
其中
public static String universal_URL_MENU = "http://192.***.1.@:9999/my_Project/ReqFromTabFor.do";
现在为Jsp或Servlet
try{
PrintWriter out=res.getWriter();
String subcategory=req.getParameter("request_menu");
System.out.println("Receive : "+subcategory);
JSONObject jobj=UserDelegate.reqFromTabForMenuBySCatg(subcategory);
}
if(jobj!=null){
out.println(jobj);
}else{
out.print("Sorry Not Available");
}
}catch(Exception e){ e.printStackTrace(); }