首页 > 解决方案 > 注册成功后如何获取 JSON 响应

问题描述

我可以成功地将用户数据发布到服务器中,但我很难从服务器获取响应(用户注册)。请查看我的代码并告诉我如何获取 Json 响应(用户注册)。我已经尝试使用布尔型和字符串类型的 Asynctask 来获取响应。但在这我保持那个字符串为空。请告诉我如何获取 Json 响应。提前致谢!!!

public class SignupActivity extends AppCompatActivity {
 EditText firstName, lastName, emailTxt, passwordTxt;
 TextView moveToLoginTxt;
 Button signUpBtn;
 public static String strFirstname;
 public static String strLastName;
 public static String strEmail;
 public static String strPwd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_signup);
    Toolbar mToolbar = (Toolbar) findViewById(R.id.signuptoolbar);

    mToolbar.setTitle("SignUp");

    firstName = (EditText) findViewById(R.id.first_name_edittext);
    lastName = (EditText) findViewById(R.id.last_name_edittext);
    emailTxt = (EditText) findViewById(R.id.email_edittext);
    passwordTxt = (EditText) findViewById(R.id.password_edittext);
    moveToLoginTxt = (TextView) findViewById(R.id.login_textview);
    signUpBtn = (Button) findViewById(R.id.btn_signup);
    signUpBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            strFirstname = firstName.getText().toString();
            strLastName = lastName.getText().toString();
            strEmail = emailTxt.getText().toString();
            strPwd = passwordTxt.getText().toString();


            if (TextUtils.isEmpty(strFirstname)) {
                firstName.setError("Please enter username");
                firstName.requestFocus();
                return;
            }

            if (TextUtils.isEmpty(strLastName)) {
                lastName.setError("Please enter your lastname");
                lastName.requestFocus();
                return;
            }

            if (TextUtils.isEmpty(strEmail)) {
                emailTxt.setError("Please enter your email");
                emailTxt.requestFocus();
                return;
            }

            if (TextUtils.isEmpty(strPwd)) {
                passwordTxt.setError("Please enter your password");
                passwordTxt.requestFocus();
                return;
            }
            Registruser registruser = new Registruser();
            registruser.execute();

            Toast.makeText(SignupActivity.this, registruser.response + "Registration Successful", Toast.LENGTH_SHORT).show();
        }
    });


}

public interface MyInterface {
    public void myMethod(boolean result);

    void onPostExecute(Boolean result);
}

public class Registruser extends AsyncTask<Void, Void, String> implements MyInterface {

    private MyInterface mListener;

    String data;
    public String response = null;

    @Override
    protected String doInBackground(Void... voids) {

        try {
            URL url = new URL("my url");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");

            connection.connect();


            connection.disconnect();


        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();

        }
        return response;

    }

    @Override
    public void myMethod(boolean result) {
        if (result == true) {
            Toast.makeText(SignupActivity.this, "Connection Succesful",
                    Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(SignupActivity.this, "Connection Failed:" + result, Toast.LENGTH_LONG).show();
        }
    }

    @Override
    public void onPostExecute(Boolean result) {
        if (mListener != null)
            mListener.myMethod(result);
    }
}

}

标签: androidjson

解决方案


您必须创建一个 InputStreamReader 来读取您的请求输入。接下来,创建一个允许遍历响应的 BufferedReader。然后遍历我们响应的每一行并将其附加到您的 StringBuilder。

@Override 
protected String doInBackground(Void... params){
  String result;
  String inputLine;
  try {
     //Create a URL object holding url
     URL myUrl = new URL("your url");
     //Create a connection
     HttpURLConnection connection =(HttpURLConnection)     
            myUrl.openConnection();
     //Set methods and timeouts
     connection.setRequestMethod(REQUEST_METHOD);
     connection.setReadTimeout(READ_TIMEOUT);
     connection.setConnectTimeout(CONNECTION_TIMEOUT);

     //Connect to url
     connection.connect()
     //Create a new InputStreamReader
     InputStreamReader streamReader = new 
         InputStreamReader(connection.getInputStream());
     //Create a new buffered reader and String Builder
     BufferedReader reader = new BufferedReader(streamReader);
     StringBuilder stringBuilder = new StringBuilder();

     while((inputLine = reader.readLine()) != null){
        stringBuilder.append(inputLine);
     }
     //Close InputStream and Buffered reader
     reader.close();
     streamReader.close();
     //Set result equal to stringBuilder
     result = stringBuilder.toString();
  }
  return result;   
  }

推荐阅读