1

如何将字符串值从 Servlet 发送到 Android 应用程序?我可以将数据从 android UI 屏幕发送到 Servlet,并将这些值与已存储在数据库中的数据相匹配。但我无法在我的 UI 屏幕上获得 Toast 或 TextView“视图”。使用真正的安卓设备;没有 AVD。这是servlet的代码:

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class myServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse response)
            throws ServletException, IOException {
            String username = req.getParameter("suserName");
          String password = req.getParameter("spassword");
                       try{
      Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();        
      String url = "jdbc:jtds:sqlserver://**********:1422/xxxxx";
       String d_username = "sa";
      String d_password = "112233";
      Connection con = DriverManager.getConnection(url, d_username, d_password);  
      String sql = "SELECT UserName, Password FROM Info";
      PreparedStatement ps = con.prepareStatement(sql);
      ResultSet rs = ps.executeQuery();
      String name = null;
      String pass = null;
      while(rs.next()){
       name = rs.getString(1).toString();
          pass = rs.getString(2).toString();
      }
      if(username.equals(name) && password.equals(pass)){
          System.out.println("iT mATHCHES");

      }else{
          System.out.println("iT Does Not Match");
      }

    } catch (Exception sqlEx) {
            System.out.println(sqlEx);
        } 
       PrintWriter out = response.getWriter();
       out.println("From Servlet");
       out.flush();   
}

    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
And Here is the Activity;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpRequest;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
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 android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class SignInForm extends Activity {
    EditText UserName;
    EditText Password;
    Button signIn;
    TextView signInText;
    // ============================================
    String name;
    String pass;

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.signin_form);
        UserName = (EditText) findViewById(R.id.IdUserNameSingInForm);
        Password = (EditText) findViewById(R.id.IdPasswordSignInForm);
        signInText = (TextView)findViewById(R.id.IdTextViewSignIn);
        StrictMode.enableDefaults();
        new signIn().execute();
    }

    public class signIn extends AsyncTask<Void, Void, Void> implements
            OnClickListener {
        @Override
        protected Void doInBackground(Void... HttpClient) {
            signIn = (Button) findViewById(R.id.IdButtonSignInForm);
            signIn.setOnClickListener(this);
            return null;
        }

        @Override
        public void onClick(View v) {
            String S_username = UserName.getText().toString();
            String S_password = Password.getText().toString();
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost("http://***********:8084/myapp/xxxxxx");
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("userName", S_username));
            nameValuePairs.add(new BasicNameValuePair("password", S_password));
            try {
                httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
                try {
                    httpClient.execute(httpPost);
                } catch (ClientProtocolException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
    @SuppressWarnings("resource")
        public void myConnection()throws IOException{
            FileReader fr = null;
            BufferedReader br = null;
            fr = new FileReader("http://******:8084/myapp/xxxxxx");
            br = new BufferedReader(fr);



    String line = br.readLine();
            //signInText.setText(line);
            Toast.makeText(SignInForm.this, line, Toast.LENGTH_SHORT).show();
}
}
}

该线程描述;但出于我的理解......任何对好的教程的建议都值得赞赏。不使用 java 超出范围。

从android向servlet发送一个字符串

4

0 回答 0