Android登录应用程序无法使用servlet

时间:2016-03-03 21:44:07

标签: java android servlets android-networking

这是我的android(客户端)方

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar maintoolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(maintoolbar);
    Button  button =(Button)findViewById(R.id.login);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            EditText e1=(EditText)findViewById(R.id.user);
            EditText e2=(EditText)findViewById(R.id.paswrd);
            String s1=e1.getText().toString();
            String s2=e2.getText().toString();
            MySync sync=new MySync();
            sync.execute(s1,s2);
        }
    });

}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

class MySync extends AsyncTask<String,Void,Integer>{
    ProgressDialog mProgressDialog;

    protected void onPreExecute(){
       //mProgressDialog = ProgressDialog.show(MainActivity.this, "Loading...", "Data is Loading...");
    }
    @Override
    protected Integer doInBackground(String... params)  {
        int result = 10;
        String url="http://192.168.0.108:8080/sbi/login";
        try {
            URL hp=new URL(url);
            HttpURLConnection connection=(HttpURLConnection)hp.openConnection();
            if(connection.getResponseCode()== HttpURLConnection.HTTP_OK){
                connection.setDoOutput(true);
                connection.setRequestMethod("GET");
                OutputStream outputStream=connection.getOutputStream();
                OutputStreamWriter outputStreamWriter=new OutputStreamWriter(outputStream);
                outputStreamWriter.write(params[0]);
                outputStreamWriter.write(params[1]);
                outputStreamWriter.flush();
                outputStreamWriter.close();

                InputStream inputStream=connection.getInputStream();
                InputStreamReader inputStreamReader=new InputStreamReader(inputStream);
                BufferedReader reader=new BufferedReader(inputStreamReader);
                String s=reader.readLine();
                if(s.equals("Yes")){
                    result=1;
                }
                else{
                    result =2;
                }

                reader.close();
            }
            else {
                result =3;
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        catch (IOException io){
            io.printStackTrace();
        }

        return result;
    }

    protected void onPostExecute(Integer  result){
        switch(result){
            case 1:
                startActivity(new Intent(MainActivity.this,Home.class));
                break;
            case 2:
                TextInputLayout layout=(TextInputLayout)findViewById(R.id.password_wrappper);
                layout.setError("Invalid Login Inputs");
                break;
            case 3:
                Toast.makeText(getApplicationContext(),"Cant Connect To network",Toast.LENGTH_SHORT);
                break;
        }
       // mProgressDialog.dismiss();

    }
}
}

这是我个人电脑上的servlet

public class Login extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{                 
InputStream sin=request.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(sin));
String s1=reader.readLine();
String s2=reader.readLine();
PrintWriter out=response.getWriter();
if(s1.equals("Mayank") && s2.equals("1234")){
    out.write("Yes");
}
else out.write("No");
}
}

如果我关闭我的tomcat服务器,那么它不会显示无法连接到网络的toast,如果我打开我的tomcat服务器并输入正确的输入,则没有任何反应。我是新手,请改善我的代码,这是我的项目

class MySync extends AsyncTask<String,Void,Integer>{
    ProgressDialog mProgressDialog;

    protected void onPreExecute(){
       mProgressDialog = ProgressDialog.show(MainActivity.this, "Loading...", "Data is Loading...");
    }
    @Override
    protected Integer doInBackground(String... params)  {
        int result = 0;
       //String url="http://192.168.0.108:8080/sbi/login?"+"key1="+params[0]+"&key2="+params[1]";
        int code;
        try {
            URL hp=new URL("http://192.168.0.108:8080/sbi/login?"+"key1="+params[0]+"&key2="+params[1]);
            HttpURLConnection urlConnection=(HttpURLConnection)hp.openConnection();
            urlConnection.connect();
            Log.i("A", "connect");
            code=urlConnection.getResponseCode();
            Log.i("A","code");
            boolean a=check(code);

           if(a){
                //urlConnection.setDoInput(true);
                Log.i("A", "input");
               // urlConnection.setDoOutput(true);
                Log.i("A", "output");
                urlConnection.setRequestMethod("GET");
                Log.i("A", "get");
                byte [] buf=("key1=" + params[0] + "&key2=" + params[1]).getBytes();
                urlConnection.getOutputStream().write(buf);
                Log.i("A", "sent");
            }
            else{
                Log.i("A","error");
                result=3;
            }
        }
        catch (MalformedURLException e) {
            Log.i("e", "Error");
        }
        catch (IOException e){
            e.printStackTrace();
        }
}

这告诉协议异常:方法deosnt支持请求正文:获取原因

0 个答案:

没有答案