我可以成功地将用户数据发布到服务器中,但是我在努力从服务器获取响应(用户注册)。请查看我的代码,并告诉我如何获取Json Response(用户注册)。我已经尝试使用具有boolean和String类型的Asynctask来获取响应。但是在此我将String保留为null。请告诉我如何获得Json Response。在此先感谢!
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);
}
}
}
答案 0 :(得分:1)
您必须创建一个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;
}