我是android的新手,我已经搜索了解决方案,但我找不到合适的解决方案,这就是我的原因 发布此Qn,
我无法在servlet中获取任何值,并且LogCat中没有错误,我的代码中有一些Toast
用于检查执行流程,所有Toast
仅在第一次尝试时起作用,如果我第二次点击我的按钮,只有第一个Toast
可以使用,
请帮我找一个解决方案,
这是我的安卓代码
public void onClick(View v) {
final String u=txt_name.getText().toString();
final String p=txt_pswd.getText().toString();
Toast.makeText(getApplicationContext(), u+p,Toast.LENGTH_LONG).show();
new AsyncTask<String , Void, Void>() {
@Override
protected Void doInBackground(String... params) {
try{
//Log.d("Asynctask", ""+params);
//Looper.prepare();
URL url=new URL("http://10.0.2.2:8080/LoginExample/LoginServlet");
HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod("GET");
//Toast.makeText(getApplicationContext(), "connecting..",Toast.LENGTH_LONG).show();
urlConnection.connect();
//Toast.makeText(getApplicationContext(), "connected",Toast.LENGTH_LONG).show();
urlConnection.getOutputStream().write(("key1="+u+"&key2="+p).getBytes());
//Toast.makeText(getApplicationContext(), "sending....",Toast.LENGTH_LONG).show();
}catch(Exception e)
{
System.out.println("ERROR IN URL CONNECTION---"+e);
}
//Looper.loop();
return null;
}
}.execute();
});
这是我的servlet,
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
try
{
System.out.println("-----servlet--------------");
// UserBean user = new UserBean();
String uname=request.getParameter("key1");
String password=request.getParameter("key2");
System.out.println("uname ins ervlet==="+uname);
System.out.println("password in servlet==="+password);
}
catch (Throwable theException)
{
System.out.println(theException);
}
}
}
答案 0 :(得分:1)
AsyncTask编写不正确。在doINBAckground中无需编写Looper。在理想情况下,doInBackground不处理UI元素。删除Toasts声明。使用Log类打印日志。
你要求部分似乎错了。如果获得tye请求,请尝试
URL url=new URL("http://10.0.2.2:8080/LoginExample/LoginServlet?"+"key1="+u+"&key2="+p);
还要检查清单文件中的Internet权限。
提供错误的Stacktrace。
答案 1 :(得分:0)
这是我的解决方案,
public void onClick(View v) {
final String u=txt_name.getText().toString();
final String p=txt_pswd.getText().toString();
Toast.makeText(getApplicationContext(), u+p,Toast.LENGTH_LONG).show();
new AsyncTask<String , Void, Void>() {
@Override
protected Void doInBackground(String... params) {
try{
URL url=new URL("http://10.0.2.2:8080/LoginExample/LoginServlet?"+"key1="+u+"&key2="+p);
HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String result = br.readLine();
Log.d("MainActivity", result);
}catch(Exception e)
{
e.printStackTrace();
System.out.println("ERROR IN URL CONNECTION---"+e);
}
// Looper.loop();
return null;
}
}.execute();
}