【问题标题】:I/O Error On Post Request Spring Boot Rest Service In Android在 Android 中发布请求 Spring Boot Rest 服务时出现 I/O 错误
【发布时间】:2023-03-09 07:35:01
【问题描述】:
  1. 我正在做一个小型 android 应用程序。在那里,我使用 Http Rest Call 将用户输入的信息存储到我的本地数据库中。
  2. 服务没有任何问题 它工作正常我在浏览器和邮递员中测试我能够通过邮递员客户端执行 CRUD 操作。
  3. 但是当我尝试从 Android 进行 POST 或 GET 时,它会抛出错误,例如在 Post 方法连接被拒绝时出现 I/O 错误。
  4. 我不知道这是什么原因。
  5. 以下是我在 Android 中的代码。
  6. 此代码用于 GET 请求。

    公共类结果扩展 AppCompatActivity { 字符串标识; 登录登录=新登录(); 最终字符串 url = "http://192.168.1.189:9001/login"; // 列表登录 = new ArrayList(); 按钮注销; TextView nameTv、ageTv、emailTv、usernameTv; 字符串名称、年龄、电子邮件、用户名;

    @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;
        }
    

  1. 以下代码用于 POST 请求。

    公共类注册扩展 AppCompatActivity { 按钮按钮注册; 公共字符串 ID; TextView editId、editName、editAge、editEmail、editUsername、editPassword; 私人字符串名称,年龄,电子邮件,用户名,密码; 登录 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);
        }
    }
    

    }


  1. 这两天我一直在寻找这个问题。
  2. 任何帮助表示感谢提前谢谢............

【问题讨论】:

    标签: java android spring rest


    【解决方案1】:
    1. 重启我的系统解决我的问题

    【讨论】:

      猜你喜欢
      • 2019-08-29
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      • 2019-01-30
      • 2014-12-14
      • 2019-01-21
      相关资源
      最近更新 更多