- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我最近开始开发我的 Android 应用程序,我需要一个登录和注册系统。我在 androidhive.info 上找到了一个教程,但我经常遇到错误。我正在使用 volley 库发送 HTTP 请求,LogCat 中的错误与该库有关。我在 DigitalOcean 上使用了服务器的公共(public) IP 地址,我认为这可能与此有关,因为在本教程中,他们将 php 脚本存储在本地主机上。这是我用于注册用户的 android Activity :
package foi.hr.air.asocijacije.ui;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
import com.android.volley.Request.Method;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import foi.hr.air.asocijacije.R;
import foi.hr.air.asocijacije.db.SQLiteHandler;
import foi.hr.air.asocijacije.main.AppConfig;
import foi.hr.air.asocijacije.main.AppController;
import foi.hr.air.asocijacije.main.MainActivity;
public class RegisterActivity extends Activity {
private static final String TAG = RegisterActivity.class.getSimpleName();
private Button btnRegister;
private Button btnLinkToLogin;
private EditText inputName;
private EditText inputSurname;
private EditText inputEmail;
private EditText inputPassword;
private EditText inputPasswordRepeated;
private ProgressDialog pDialog;
private SessionManager session;
private SQLiteHandler db;
public void onCreate(Bundle savedBundleInstance) {
super.onCreate(savedBundleInstance);
setContentView(R.layout.register);
inputName = (EditText) findViewById(R.id.name);
inputSurname = (EditText) findViewById(R.id.surname);
inputEmail = (EditText) findViewById(R.id.email);
inputPassword = (EditText) findViewById(R.id.password);
inputPasswordRepeated = (EditText) findViewById(R.id.passwordCheck);
btnRegister = (Button) findViewById(R.id.btnRegister);
btnLinkToLogin = (Button) findViewById(R.id.btnLinkToLoginScreen);
pDialog = new ProgressDialog(this);
pDialog.setCancelable(false);
session = new SessionManager(getApplicationContext());
db = new SQLiteHandler(getApplicationContext());
if (session.isLoggedIn()) {
Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String name = inputName.getText().toString();
String surname = inputSurname.getText().toString();
String email = inputEmail.getText().toString();
String password = inputPassword.getText().toString();
String passwordCheck = inputPasswordRepeated.getText().toString();
if(name.isEmpty() || surname.isEmpty() || email.isEmpty() || password.isEmpty() || passwordCheck.isEmpty()) {
Toast.makeText(getApplicationContext(), "Please enter your details", Toast.LENGTH_LONG).show();
}
else {
if (password.equals(passwordCheck)){
registerUser(name, surname, email, password);
}
else {
Toast.makeText(getApplicationContext(), "Passwords don't match", Toast.LENGTH_LONG).show();
}
}
}
});
btnLinkToLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(i);
}
});
}
private void registerUser(final String name, final String surname, final String email, final String password) {
String tag_string_req = "req_register";
pDialog.setMessage("Registering...");
showDialog();
StringRequest strReq = new StringRequest(Method.POST, AppConfig.URL_REGISTER, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// TODO Auto-generated method stub
Log.d(TAG, "Register response: " + response.toString());
hideDialog();
try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
if(!error) {
String uid = jObj.getString("uid");
JSONObject user = jObj.getJSONObject("user");
String name = user.getString("name");
String surname = user.getString("surname");
String email = user.getString("email");
String created_at = user.getString("created_at");
db.addUser(uid, name, surname, email, created_at);
Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
else {
String errorMsg = jObj.getString("errorMsg");
Toast.makeText(getApplicationContext(), errorMsg, Toast.LENGTH_LONG).show();
}
}
catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
Log.e(TAG, "Registration error: " + error.getMessage());
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();
hideDialog();
}
}) {
@Override
protected Map<String, String> getParams() {
// TODO Auto-generated method stub
Map<String, String> params = new HashMap<String, String>();
params.put("tag", "register");
params.put("name", name);
params.put("surname", surname);
params.put("email", email);
params.put("password", password);
return params;
}
};
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
private void showDialog() {
if (!pDialog.isShowing()) {
pDialog.show();
}
}
private void hideDialog() {
if(pDialog.isShowing()) {
pDialog.dismiss();
}
}
}
在我的 AppConfig 类中,我存储了 php 脚本所在位置的路径(公共(public) IP)
package foi.hr.air.asocijacije.main;
public class AppConfig {
public static String URL_LOGIN = "http://95.85.57.105/android_login_api/";
public static String URL_REGISTER = "http://95.85.57.105/android_login_api/";
}
这是我在 LogCat 中得到的错误日志
04-29 11:35:18.440: E/Volley(1742): [180] BasicNetwork.performRequest: Unexpected response code 500 for http://95.85.57.105/android_login_api/
04-29 11:35:18.916: E/RegisterActivity(1742): Registration error: null
我希望你能帮助我解决这个问题,我尝试在 Mozilla 插件 HttpRequester 上使用 POST 方法来尝试将数据存储在我的在线 MySQL 数据库中,只是为了确保 php 脚本工作正常,但我没有不知道我应该以 JSON 格式发送什么内容。如果需要,我会发布更多数据,以便您了解问题出在哪里。
最佳答案
不是应该的吗
public static String URL_LOGIN = "http://95.85.57.105/android_login_api/login.php";
public static String URL_REGISTER = "http://95.85.57.105/android_login_api/register.php";
我不确定抛给你的错误到底是 404 还是 500 ,但还是试一试。
编辑:(2015 年 12 月 9 日更新)
要事第一。 500错误的问题是服务器错误,先检查日志可以解决问题。转到服务器中的 android_login_api 文件夹并添加这两行
error_reporting(-1);
ini_set('display_errors', 'On');
现在您的 Android Studio 将显示错误日志以及实际问题所在。我遇到了同样的问题,在查看错误后,问题出在数据库连接上。如果您仍然发现此问题仍然存在,您可以在 google 中使用 POSTMAN 或 RESTAPI 客户端扩展并检查给定的 URL 是否在您的服务器上工作。它应该有所帮助。
关于php - BasicNetwork.performRequest : Unexpected response code 500, 安卓注册系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29949386/
我试图通过 volley 库向我的服务器发送一个发布请求。但它不起作用。我已经在 Postman 中测试了我的 API,它在那里工作。我使用了相同的参数。 我得到的错误: BasicNetwork.p
我在使用 volley 库发出网络请求时遇到此错误,我已点击这些链接 Android Volley - BasicNetwork.performRequest: Unexpected response
当我尝试使用 Volley StringRequest 或 JsonObjectRequest 通过 rest api 获取数据时。我总是收到 400 错误。它与 postman 合作良好。 http
所以我正在尝试登录我的应用程序,当我在插入用户名和密码后单击登录按钮时,此错误显示在 android studio 中左下角底部工具栏的运行选项卡中: E/Volley: [11996] BasicN
我正在尝试从优步获取访问 token (我能够收到请求代码)。但是每当我尝试调用调用响应时总是显示错误 BasicNetwork.performRequest: Unexpected response
我的 Android Studio 中有这个登录 Java 代码: private void loginUser(){ pd = ProgressDialog.show(LoginAc
我正在使用 volley 库通过 POST 方法将用户注册到后端服务器。但它在 android logcat 中显示 BasicNetwork.performRequest: Unexpected r
当单击尚未选择的 EditParts(因此没有“直接编辑请求”)时,不会调用 EditPart 的方法 performRequest(Request)。 事情应该是这样吗?如果是,那么 REQ_SEL
我想从数据库中获取用户的信息并显示出来,但我一直收到这个错误: BasicNetwork.performRequest: Unexpected response code 404 这是我的javaco
为什么当我点击“登录”按钮时出现此错误:“E/Volley: [126] BasicNetwork.performRequest: 意外响应代码 500”? PS:它适用于本地,因此适用于本地数据库。
对于我的移动应用程序,我使用 Android Pay + Stripe 作为支付网关。我使用 Stripe 创建了一个商家帐户,并使用 PUBLISHABLE key 生成了一个 token 。在过去
我正在使用 Volley 库向服务器发送登录到应用程序的请求。直到几个小时前它才出现任何问题。但没有任何原因,我收到此错误“BasicNetwork.performRequest:意外响应代码 429
我正在尝试更新数据库中的参数,但在 Android 中我收到此错误: 09-15 13:26:43.505 31109-31784/app.bsmo.ismael034.com.bsmo E/Voll
我有这个错误: Volley: [8918] BasicNetwork.performRequest: Unexpected response code 403 for 我正在尝试连接服务器,但我无法
我正在使用 volley 将带有 GET 方法的请求链接发送到服务器以获取 json 对于大多数设备的大多数 android 版本,它都可以正常工作... 但它在一些平板电脑上发生意外错误并导致此错误
我正在尝试将数据从 Android 应用程序发送到 Servlet。我的 Android 应用程序运行正常。 问题仅与发送到 Servlet 的请求有关。它给出错误 BasicNetwork.perf
我最近开始开发我的 Android 应用程序,我需要一个登录和注册系统。我在 androidhive.info 上找到了一个教程,但我经常遇到错误。我正在使用 volley 库发送 HTTP 请求,L
我正在做一个用户注册是一个小模块的项目。我在这里使用了一些参数,例如姓名、电子邮件、联系方式、年龄、地址和个人资料图片。 //Here is my Android part Code Where Pr
问题陈述: 我正在尝试访问一个 REST API,该 API 将使用 Volley 为各种 HTTP 状态代码(400、403、200 等)返回一个 JSON 对象。 对于 200 以外的任何 HTT
我的第一个帖子:Anything I try to store on database enters with value '0' 我解决了这个问题,但现在我遇到了另一个问题:为什么我尝试登录时出现此
我是一名优秀的程序员,十分优秀!