- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
当我尝试使用 Volley StringRequest 或 JsonObjectRequest 通过 rest api 获取数据时。我总是收到 400 错误。它与 postman 合作良好。 http请求方式为POST,Content-Type为application/x-www-form-urlencoded。我还检查了我的参数拼写,我觉得没问题。我尝试了 StringRequest 和 JsonObjectRequest,结果是 E/Volley: [10283] BasicNetwork.performRequest: Unexpected response code 400。下面是我的代码。我附上了截图。
StringRequest stringRequest = new StringRequest(Request.Method.POST, AppConfig.URL_LOGIN, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, response.toString());
viewHelper.hideDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, error.toString());
viewHelper.hideDialog();
}
}){
@Override
protected Map<String, String> getParams() {
// Posting parameters to login url
Map<String, String> params = new HashMap<String, String>();
params.put("grant_type", "password");
params.put("username", email);
params.put("password", password);
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> params = new HashMap<String, String>();
params.put("Content-Type", "application/x-www-form-urlencoded");
return params;
}
@Override
public String getBodyContentType(){
return "application/x-www-form-urlencoded";
}
};
stringRequest.setRetryPolicy(new DefaultRetryPolicy(5000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
// Adding request to request queue
AppController.getInstance().addToRequestQueue(stringRequest, "Authenticating User");
我也尝试过 volley JSONObjectRequest
Map<String, String> params = new HashMap<String, String>();
params.put("grant_type", "password");
params.put("username", email);
params.put("password", password);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, AppConfig.URL_LOGIN, new JSONObject(params), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/x-www-form-urlencoded");
return headers;
}
};
谁能帮我解决这个问题。
最佳答案
下面是使用 Volley 库的 POST 请求的工作示例。
将此添加到您的 build.gradle (Module:app) -编译'com.mcxiaoke.volley:library:1.0.19'
StringRequest stringRequest = new StringRequest(Request.Method.POST, AppConfig.URL_LOGIN, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, response.toString());
progressDialog.dismiss();
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(response);
if(jsonObject.has("success")){
if(jsonObject.getBoolean("success") == true){
JSONObject userObject = new JSONObject(jsonObject.getString("user"));
Map<String, String> loginDetails = new HashMap<String, String>();
loginDetails.put(KEY_IS_LOGGED_IN, "true");
loginDetails.put(ACCESS_TOKEN, jsonObject.getString(ACCESS_TOKEN));
loginDetails.put(USERID, userObject.getString(USERID));
loginDetails.put(FIRSTNAME, userObject.getString(FIRSTNAME));
loginDetails.put(LASTNAME, userObject.getString(LASTNAME));
loginDetails.put(EMAIL, userObject.getString(EMAIL));
session = new SessionManager(_myActivity);
session.setLogin(loginDetails);
Intent intent = new Intent(LoginActivity.this, SearchActivity.class);
intent.putExtra("FROM_ACTIVITY", "LoginActivity");
startActivity(intent);
LoginActivity.this.finish();
}else{
btnLogin.setClickable(true);
btnLogin.setEnabled(true);
Toast.makeText(getApplicationContext(), "Username or Password does not matched!", Toast.LENGTH_LONG).show();
}
}
} catch (JSONException e) {
btnLogin.setClickable(true);
btnLogin.setEnabled(true);
e.printStackTrace();
Toast.makeText(getApplicationContext(), "Something went wrong, Please try agian", Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, error.toString());
progressDialog.dismiss();
btnLogin.setClickable(true);
btnLogin.setEnabled(true);
}
}){
@Override
protected Map<String, String> getParams() {
// Posting parameters to login url
Map<String, String> params = new HashMap<String, String>();
params.put("grant_type", "password");
params.put("username", email);
params.put("password", password);
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> params = new HashMap<String, String>();
params.put("Content-Type", "application/x-www-form-urlencoded");
return params;
}
@Override
public String getBodyContentType(){
return "application/x-www-form-urlencoded";
}
};
stringRequest.setRetryPolicy(new DefaultRetryPolicy(5000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
// Adding request to request queue
RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext());
mRequestQueue.add(stringRequest);
如果有人遇到上述代码的问题,请发表评论。
感谢所有试图帮助我的人。
关于android - BasicNetwork.performRequest - 意外响应代码 400 (POST),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42827279/
我试图通过 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' 我解决了这个问题,但现在我遇到了另一个问题:为什么我尝试登录时出现此
我是一名优秀的程序员,十分优秀!