我在android上创建登录应用程序我使用asynctask和Json通过服务器交换数据但我收到此错误我正在添加code.kindly帮助人
class RegisterUser extends AsyncTask<Void, Void, String> {
private ProgressBar progressBar;
@Override
protected String doInBackground(Void... voids) {
//creating request handler object
RequestHandler requestHandler = new RequestHandler();
//creating request parameters
HashMap<String, String> params = new HashMap<>();
params.put("username", username);
params.put("email", email);
params.put("password", password);
params.put("gender", gender);
//returing the response
return requestHandler.sendPostRequest(URLs.URL_REGISTER,
params);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
//displaying the progress bar while user registers on the server
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//hiding the progressbar after completion
progressBar.setVisibility(View.GONE);
Log.i("JSON Parser", s);
try {
//converting response to json object
JSONObject obj = new JSONObject(s);
// Log.i("JSON Parser", obj);
//if no error in response
if (!obj.getBoolean("error")) {
Toast.makeText(getApplicationContext(),
obj.getString("message"), Toast.LENGTH_SHORT).show();
//getting the user from the response
JSONObject userJson = obj.getJSONObject("user");
//creating a new user object
User user = new User(
userJson.getInt("id"),
userJson.getString("username"),
userJson.getString("email"),
userJson.getString("gender")
);
//storing the user in shared preferences
SharedPrefManager.getInstance(getApplicationContext()).userLogin(user);
//starting the profile activity
finish();
startActivity(new Intent(getApplicationContext(),
ProfileActivity.class));
} else {
Toast.makeText(getApplicationContext(), "Some error
occurred", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
Log.d("error is","this");
}
}
}
//executing the async task
RegisterUser ru = new RegisterUser();
ru.execute();
}
而有趣的是 下面的log.i
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//hiding the progressbar after completion
progressBar.setVisibility(View.GONE);
Log.i("JSON Parser", s);
给我两个我的php文件的源代码
我的php文件在
之下<?php
require_once 'DbConnect.php';
//an array to display response
$response = array();
mysqli_set_charset($con, 'utf8');
//if it is an api call
//that means a get parameter named api call is set in the URL
//and with this parameter we are concluding that it is an api call
if (isset($_GET['apicall'])) {
switch ($_GET['apicall']) {
case 'signup':
//checking the parameters required are available or not
if (isTheseParametersAvailable
(array('username', 'email', 'password', 'gender'))) {
//getting the values
$username = $_POST['username'];
$email = $_POST['email'];
$password = md5($_POST['password']);
$gender = $_POST['gender'];
//checking if the user is already exist with this username
or email
//as the email and username should be unique for every user
$stmt = $conn->prepare("SELECT id FROM users WHERE username
= ? OR email = ?");
$stmt->bind_param("ss", $username, $email);
$stmt->execute();
$stmt->store_result();
//if the user already exist in the database
if ($stmt->num_rows > 0) {
$response['error'] = true;
$response['message'] = 'User already registered';
$stmt->close();
} else {
//if user is new creating an insert query
$stmt = $conn->prepare("INSERT INTO users (username,
email, password, gender) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssss", $username, $email, $password, $gender);
//if the user is successfully added to the database
if ($stmt->execute()) {
//fetching the user back
$stmt = $conn->prepare("SELECT id, id, username,
email, gender FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->bind_result($userid, $id, $username, $email, $gender);
$stmt->fetch();
$user = array(
'id' => $id,
'username' => $username,
'email' => $email,
'gender' => $gender
);
$stmt->close();
//adding the user data in response
$response['error'] = false;
$response['message'] = 'User registered
successfully';
$response['user'] = $user;
}
}
} else {
$response['error'] = true;
$response['message'] = 'required parameters are not
available';
}
break;
case 'login':
//for login we need the username and password
if (isTheseParametersAvailable(array('username', 'password'))) {
//getting values
$username = $_POST['username'];
$password = md5($_POST['password']);
//creating the query
$stmt = $conn->prepare("SELECT id, username, email, gender
FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
$stmt->store_result();
//if the user exist with given credentials
if ($stmt->num_rows > 0) {
$stmt->bind_result($id, $username, $email, $gender);
$stmt->fetch();
$user = array(
'id' => $id,
'username' => $username,
'email' => $email,
'gender' => $gender
);
$response['error'] = false;
$response['message'] = 'Login successfull';
$response['user'] = $user;
} else {
//if the user not found
$response['error'] = false;
$response['message'] = 'Invalid username or password';
}
}
break;
default:
$response['error'] = true;
$response['message'] = 'Invalid Operation Called';
}
} else {
//if it is not api call
//pushing appropriate values to response array
$response['error'] = true;
$response['message'] = 'Invalid API Call';
}
//displaying the response in json structure
echo json_encode($response);
//function validating all the paramters are available
//we will pass the required parameters to this function
function isTheseParametersAvailable($params) {
//traversing through all the parameters
foreach ($params as $param) {
//if the paramter is not available
if (!isset($_POST[$param])) {
//return false
return false;
}
}
//return true if every param is available
return true;
}
我是android和java的新手并且自己学习。我在某个网站上发现了这个代码并试图执行它,但它给出了这个错误。 帮助
答案 0 :(得分:0)
看起来您的PHP文件无效。它从<?
开始,在头部缺少php
。因此,不要使用<?
而是在PHP文件中使用<?php
。
在读取文件时,Apache(或您使用的任何PHP服务器)读取它,并且不会将其识别为PHP文件。因此,只需将其内容作为回复发送即可将其作为文本文件处理。