NameValuePair, HttpParams, HttpConnection Params deprecated on server request class for login app

前端 未结 1 1220
眼角桃花
眼角桃花 2021-01-03 08:50

First time asking a question here, and new to android programming. I\'m following an online youtube tutorial to create a login by user \"Tonikami TV\". Everything is fine wi

相关标签:
1条回答
  • You can use the following code which uses the standard java and android methods

     @Override
    protected Void doInBackground(Void... params) {
        //Use HashMap, it works similar to NameValuePair
        Map<String,String> dataToSend = new HashMap<>();
        dataToSend.put("firstname", user.FirstName);
        dataToSend.put("lastname", user.LastName);
        dataToSend.put("age", user.Age + "");
        dataToSend.put("emailaddress", user.EmailAddress);
        dataToSend.put("password", user.Password);
    
        //Server Communication part - it's relatively long but uses standard methods
    
        //Encoded String - we will have to encode string by our custom method (Very easy)
        String encodedStr = getEncodedData(dataToSend);
    
        //Will be used if we want to read some data from server
        BufferedReader reader = null;
    
        //Connection Handling
        try {
            //Converting address String to URL
            URL url = new URL(SERVER_ADDRESS + "Register.php");
            //Opening the connection (Not setting or using CONNECTION_TIMEOUT)
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
    
            //Post Method
            con.setRequestMethod("POST");
            //To enable inputting values using POST method 
            //(Basically, after this we can write the dataToSend to the body of POST method)
            con.setDoOutput(true);
            OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream());
            //Writing dataToSend to outputstreamwriter
            writer.write(encodedStr);
            //Sending the data to the server - This much is enough to send data to server
            //But to read the response of the server, you will have to implement the procedure below
            writer.flush();
    
            //Data Read Procedure - Basically reading the data comming line by line
            StringBuilder sb = new StringBuilder();
            reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
    
            String line;
            while((line = reader.readLine()) != null) { //Read till there is something available
                sb.append(line + "\n");     //Reading and saving line by line - not all at once
            }
            line = sb.toString();           //Saving complete data received in string, you can do it differently
    
            //Just check to the values received in Logcat
            Log.i("custom_check","The values received in the store part are as follows:");
            Log.i("custom_check",line);
    
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(reader != null) {
                try {
                    reader.close();     //Closing the 
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        //Same return null, but if you want to return the read string (stored in line)
        //then change the parameters of AsyncTask and return that type, by converting
        //the string - to say JSON or user in your case
        return null;
    }
    

    The getEncodedData method (Simple to understand)

    private String getEncodedData(Map<String,String> data) {
            StringBuilder sb = new StringBuilder();
            for(String key : data.keySet()) {
                String value = null;
                try {
                    value = URLEncoder.encode(data.get(key),"UTF-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
    
                if(sb.length()>0)
                    sb.append("&");
    
                sb.append(key + "=" + value);
            }
            return sb.toString();
        }
    
    0 讨论(0)
提交回复
热议问题