提问者:小点点

Android中Post Request Spring Boot Rest服务的I/O错误


>

  • 我正在做一个小的android应用程序。因为我使用Http Rest调用将用户输入的信息存储到本地数据库。
  • 服务没有问题,工作正常,我在浏览器和邮递员中测试过,我可以通过邮递员客户端执行CRUD操作。
  • 但当我尝试发布或从Android获取时,它会抛出错误,如POST方法连接拒绝时的I/O错误。
  • 我不知道这是什么原因。
  • 下面是我在Android中的代码。
  • 此代码用于GET请求。

    public class Result extends appcompattivity{String id;Login Login=new Login();final String url=“http://192.168.1.189:9001/Login”;//List Login=new arraylist<>();Button注销;TextView nameTv,ageTv,emailTv,usernametv;String NAME,AGE,EMAIL,username;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
       // Intent intent=getIntent();
       // ID=intent.getStringExtra("ID");
        // new HttpGetTask().execute();
    
        logout = (Button) findViewById(R.id.buttonLogout);
        nameTv = (TextView) findViewById(R.id.nameTextView);
        ageTv = (TextView) findViewById(R.id.ageTextView);
        emailTv = (TextView) findViewById(R.id.emailTextView);
        usernameTv = (TextView) findViewById(R.id.UsernameTextView);
        nameTv.setText(NAME);
        ageTv.setText(AGE);
        emailTv.setText(EMAIL);
        usernameTv.setText(USERNAME);
        new HttpRequestTask().execute();
    
    
        logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent logoutintent = new Intent(Result.this, MainActivity.class);
                startActivity(logoutintent);
            }
        });
    
    
    }
    
    private class HttpRequestTask extends AsyncTask<Void, Void, Login> {
    
    
        @Override
        protected Login doInBackground(Void... params) {
            try {
    
    
                //  final String url = "http://192.168.1.213:9001/consumer/local/64";
    
                RestTemplate restTemplate = new RestTemplate();
                Login lg = restTemplate.getForObject(url, Login.class);
               // NAME=lg.getName().toString();
                Log.d("", "doInBackground:++++++++++++++++++++++ "+NAME);
                return lg;
    
            } catch (Exception e) {
                Log.e("MainActivity", e.getMessage(), e);
    
            }
            return null;
        }
    

    >

  • 下面的代码用于POST请求。

    public class Register extends AppCompatActivity{Button buttonregister;public String id;TextView editId,editName,editAge,editEmail,editUsername,editpassword;private String Name,Age,Email,Username,editpassword;Login Login=new Login();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        editId=(TextView)findViewById(R.id.editId);
    
        editName=(TextView)findViewById(R.id.editName);
        editAge=(TextView)findViewById(R.id.editAge);
        editEmail=(TextView)findViewById(R.id.editEmail);
        editUsername=(TextView)findViewById(R.id.editUsername);
        editPassword=(TextView)findViewById(R.id.editPassword);
        buttonRegister = (Button)findViewById(R.id.buttonRegister);
    
        buttonRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
    
                Toast.makeText(Register.this, "Registration Successful", Toast.LENGTH_SHORT).show();
                Name = editName.getText().toString();
    
                Age = editAge.getText().toString();
                Email = editEmail.getText().toString();
                Username = editUsername.getText().toString();
                Password = editPassword.getText().toString();
    
                Log.d("???????????", "onClick:------------> " + Name);
                Log.d("???????????", "onClick:------------> " + ID);
                Log.d("???????????", "onClick:------------> " + Age);
                Log.d("???????????", "onClick:------------> " + Email);
                Log.d("???????????", "onClick:------------> " + Username);
                Log.d("???????????", "onClick:------------> " + Password);
                new HttpPostTask().execute();
                Intent regintent = new Intent(Register.this, Result.class);
                //regintent.putExtra("ID",1);
                startActivity(regintent);
    
                /*Intent regintent = new Intent(Register.this, Result.class);
                startActivity(regintent);*/
    
    
            }
        });
    
    
    
    
    }
    public class HttpPostTask extends AsyncTask<Void,Void,Login>{
    
        @Override
        protected Login doInBackground(Void... params) {
            final String url = "http://192.168.1.189:9001/login";
            RestTemplate restTemplate = new RestTemplate();
            Login login = new Login();
            login.setName(Name);
            login.setAge(Age);
            login.setEMail(Email);
            login.setUserName(Username);
            login.getId();
            login.setPassword(Password);
            Log.d("???????????", "onClick:!!!!!!!!!!!!!!> " + Name);
    
    
            login = restTemplate.postForObject(url, login, Login.class);
            ID=login.getId();
            Log.d("???????????", "onClick:!!!!!!!!!!!!!!> " + login.getId());
    
            return login;
        }
        @Override
        protected void onPostExecute(Login login){
            super.onPostExecute(login);
        }
    }
    

    }

      null

  • 共1个答案

    匿名用户

    1. 重新启动系统可解决问题