Java 如何将数据从servlet传递到android应用程序
这是我的android应用程序Java 如何将数据从servlet传递到android应用程序,java,android,servlets,Java,Android,Servlets,这是我的android应用程序 I have a form in android upon submit im inserting it into database using servlet i have to show to user that form was inserted successfully. this is my application import java.io.IOException; import javax.servlet.ServletException;
I have a form in android upon submit im inserting it into database using servlet i have to show to user that form was inserted successfully. this is my application
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.ArrayList;
/**
*
* @author trainee
*/
public class form extends HttpServlet {
String name;
String password;
Connection con = null;
Statement stmt = null;
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
/* TODO output your page here
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet form</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet form at " + request.getContextPath () + "</h1>");
out.println("</body>");
out.println("</html>");
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try
{
}
catch(Exception ex)
{
}
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try
{
Class.forName("com.mysql.jdbc.Driver");
con =DriverManager.getConnection ("jdbc:mysql://localhost:3306/Login","root", "");
String nn=request.getParameter("name");
String pass=request.getParameter("pass");
String email=request.getParameter("email");
stmt=con.createStatement();
String query="insert into users values('"+nn+"','"+pass+"','"+email+"');";
int v=stmt.executeUpdate(query);
ArrayList<String> arr=new ArrayList<String>();
arr.add("inserted");
System.out.println("sent response back...");
}
catch(Exception ex)
{
}
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
package org.me.loginandroid;
导入java.io.BufferedReader;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.util.ArrayList;
导入java.io.*;
导入org.apache.http.HttpEntity;
导入org.apache.http.HttpResponse;
导入org.apache.http.NameValuePair;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.entity.UrlEncodedFormEntity;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.apache.http.message.BasicNameValuePair;
导入org.json.JSONArray;
导入org.json.JSONObject;
导入android.app.Activity;
导入android.content.Intent;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入org.apache.http.client.methods.HttpGet;
公共类MainActivity扩展了活动{
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
按钮btn1=(按钮)findViewById(R.id.submit);
btn1.setOnClickListener(listener\u登录);
}
私有OnClickListener侦听器\u login=new OnClickListener(){
布尔检查=假;
公共void onClick(视图v){
EditText emailText=(EditText)findViewById(R.id.email);
EditText passText=(EditText)findViewById(R.id.password);
EditText nameText=(EditText)findViewById(R.id.uname);
String name=nameText.getText().toString();
字符串email=(emailText.getText().toString());
字符串传递=(passText.getText().toString());
字符串结果=”;
ArrayList nameValuePairs=新的ArrayList();
添加(新的BasicNameValuePair(“name”,name));
添加(新的BasicNameValuePair(“pass”,pass));
添加(新的BasicNameValuePair(“email”,email));
试一试{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://10.0.2.2:8084/Login/form");
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
HttpResponse response=httpclient.execute(httppost);
HttpEntity=response.getEntity();
InputStream=entity.getContent();
BufferedReader reader=新的BufferedReader(新的InputStreamReader(is,“iso-8859-1”),8;
StringBuilder sb=新的StringBuilder();
字符串行=null;
而((line=reader.readLine())!=null){
sb.追加(第+行“\n”);
}
is.close();
结果=sb.toString();
TextView lbl=(TextView)findViewById(R.id.lbl);
lbl.setText(结果);
}捕获(例外e){
TextView tv=(TextView)findViewById(R.id.err);
tv.setText(“错误解析数据”+e.toString());
System.out.println(“错误解析数据”+e.toString());
}
//解析json数据
试一试{
布尔检查=假;
ArrayList数组=新的ArrayList();
对于(int i=0;i,您需要建立一个到servlet页面的URL连接并执行此操作。例如:首先,
如果您的doGet()
和doPost()
执行相同的操作,您可以从另一个调用一个,发送请求
和响应
其次,您可以将ArrayList
传递给android应用程序。
Servlet和Android API都有它
编辑:
您需要读取HttpURLConnection对象生成的InputStream。
看看这本书:
(旧书)
String-input=getString(R.String.input);
试试{
URL=newurl(输入);
URLConnection connection=url.openConnection();
HttpURLConnection http=(HttpURLConnection)连接;
int response=http.getResponseCode();
if(response==HttpURLConnection.HTTP_OK){
InputStream is=http.getInputStream();
//对流执行任何您想要的操作
}
}
catch(畸形异常){}
catch(IOException异常){}
您可以通过json格式
从servlet向andriod应用程序获取数据。
请看一下这个
链接以了解如何从andriod应用程序调用Servlet并获得响应
返回json格式
从Andriod调用Servlet
package org.me.loginandroid;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.io.*;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import org.apache.http.client.methods.HttpGet;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn1 = (Button) findViewById(R.id.submit);
btn1.setOnClickListener(listener_login);
}
private OnClickListener listener_login = new OnClickListener() {
boolean check = false;
public void onClick(View v) {
EditText emailText = (EditText) findViewById(R.id.email);
EditText passText = (EditText) findViewById(R.id.password);
EditText nameText = (EditText) findViewById(R.id.uname);
String name = nameText.getText().toString();
String email = (emailText.getText().toString());
String pass = (passText.getText().toString());
String result = "";
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("name", name));
nameValuePairs.add(new BasicNameValuePair("pass", pass));
nameValuePairs.add(new BasicNameValuePair("email", email));
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2:8084/Login/form");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
TextView lbl = (TextView) findViewById(R.id.lbl);
lbl.setText(result);
} catch (Exception e) {
TextView tv = (TextView) findViewById(R.id.err);
tv.setText("Error parsing data " + e.toString());
System.out.println("Error parsing data " + e.toString());
}
//parse json data
try {
boolean check=false;
ArrayList<String> arrays=new ArrayList<String>();
for(int i=0;i<arrays.size();i++)
{
if(arrays.get(i).equals("Inserted"))
{
check=true;
}
else
{
}
}
if(check)
{
Intent myintent = new Intent(MainActivity.this, welcome.class);
startActivity(myintent);
}
else
{
TextView tv = (TextView) findViewById(R.id.err);
tv.setText("Data was not inserted properly");
}
} catch (Exception e) {
//setContentView(R.layout.notify);
TextView tv = (TextView) findViewById(R.id.err);
tv.setText(e.toString());
System.out.println("log_tag" + "Error parsing data ");
}
}
};
}
//将数据从服务器获取到andriod
private InputStream callService(String text) {
InputStream in = null;
SERVLET_URL = http://wizkid.com/web/updateServlet";
try {
URL url = new URL(SERVLET_URL);
URLConnection conn = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setRequestMethod("POST");
httpConn.setDoInput(true);
httpConn.setDoOutput(true);
httpConn.connect();
DataOutputStream dataStream = new DataOutputStream(conn
.getOutputStream());
dataStream.writeBytes(text);
dataStream.flush();
dataStream.close();
int responseCode = httpConn.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
in = httpConn.getInputStream();
}
} catch (Exception ex) {
display("Error: Not not connect");
}
return in;
}
您可以在这里查看。这里有一个完整的描述和示例代码
您需要添加更多信息。您是如何提出请求的。如何在请求中添加信息以及如何在android应用程序中处理这些信息您可以添加一些信息吗?您需要什么样的帮助?但是如何提供android url?我如何找到它
private String getResultFromServlet(String text) {
String result = "";
InputStream in = callService(text);
if (in != null) {
JSONObject jsonResponse;
try {
jsonResponse = new JSONObject(convertStreamToString(in));
result = jsonResponse.getString("output");
} catch (JSONException e) {
result = "Error: JSON Object couldn't be made";
}
} else {
result = "Error: Service not returning result";
}
return result;
}