仅在注册期间仅在 wifi 上出现 409 冲突错误
Posted
技术标签:
【中文标题】仅在注册期间仅在 wifi 上出现 409 冲突错误【英文标题】:409 conflict error only on wifi only during register 【发布时间】:2019-12-25 23:12:13 【问题描述】:我正在尝试注册用户。但是注册过程在移动数据上运行良好,但在 wifi 网络上返回 409 错误。我对这个问题一无所知。邮递员也在返回 409 冲突。 我在 android 应用程序中收到此响应:
E/Volley: [88456] BasicNetwork.performRequest: Unexpected response code 409 for https://aayocab.com/api/provider/register/
它在项目的初始阶段运行良好。但它现在开始恢复冲突,我处于两难境地。我已经实现如下:
要注册的laravel代码:
public function register(Request $request)
$this->validate($request, [
'device_id' => 'required',
'device_type' => 'required|in:android,ios',
'device_token' => 'required',
'first_name' => 'required|max:255',
'last_name' => 'required|max:255',
'email' => 'required|email|max:255|unique:providers',
'mobile' => 'required',
'password' => 'required|min:6|confirmed',
]);
try
$Provider = $request->all();
$Provider['password'] = bcrypt($request->password);
$providerCode = 'p'.mt_rand(100, 999). mt_rand(100, 999);
$Provider['provider_code'] = $providerCode;
$Provider = Provider::create($Provider);
if(Setting::get('demo_mode', 0) == 1)
$Provider->update(['status' => 'approved']);
ProviderService::create([
'provider_id' => $Provider->id,
'service_type_id' => '1',
'status' => 'active',
'service_number' => '4pp03ets',
'service_model' => 'Audi R8',
]);
ProviderDevice::create([
'provider_id' => $Provider->id,
'udid' => $request->device_id,
'token' => $request->device_token,
'type' => $request->device_type,
]);
return $Provider;
catch (Exception $e)
return response()->json(['error' => trans('api.something_went_wrong')], 500);
我在andorid应用中解析数据如下:
private void registerAPI()
customDialog = new CustomDialog(context);
customDialog.setCancelable(false);
if (customDialog != null)
customDialog.show();
JSONObject object = new JSONObject();
try
object.put("device_type", "android");
object.put("device_id", device_UDID);
object.put("device_token", device_token);
object.put("login_by", "manual");
object.put("first_name", first_name.getText().toString());
object.put("last_name", last_name.getText().toString());
object.put("email", email.getText().toString());
object.put("password", password.getText().toString());
object.put("password_confirmation", password.getText().toString());
object.put("mobile", SharedHelper.getKey(RegisterActivity.this, "mobile"));
catch (JSONException e)
e.printStackTrace();
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, URLHelper.register, object, new Response.Listener<JSONObject>()
@Override
public void onResponse(JSONObject response)
if (customDialog != null && customDialog.isShowing())
customDialog.dismiss();
utils.print("SignInResponse", response.toString());
SharedHelper.putKey(RegisterActivity.this, "email", email.getText().toString());
SharedHelper.putKey(RegisterActivity.this, "password", password.getText().toString());
signIn();
, new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
if (customDialog != null && customDialog.isShowing())
customDialog.dismiss();
String json = null;
String Message;
NetworkResponse response = error.networkResponse;
if (response != null && response.data != null)
Log.e("Error SignIN","::"+response.data.toString());
Log.e("Error SignIN","::"+response.toString());
utils.print("MyTestError1", "" + response.statusCode);
try
JSONObject errorObj = new JSONObject(new String(response.data));
utils.print("ErrorInRegisterAPI", "" + errorObj.toString());
if (response.statusCode == 400 || response.statusCode == 405 || response.statusCode == 500)
try
displayMessage(errorObj.optString("error"));
catch (Exception e)
displayMessage(getString(R.string.something_went_wrong));
else if (response.statusCode == 401)
try
if (errorObj.optString("message").equalsIgnoreCase("invalid_token"))
//Call Refresh token
else
displayMessage(errorObj.optString("message"));
catch (Exception e)
displayMessage(getString(R.string.something_went_wrong));
else if (response.statusCode == 422)
json = trimMessage(new String(response.data));
if (json != "" && json != null)
if (json.startsWith("The email has already been taken"))
displayMessage(getString(R.string.email_exist));
else
displayMessage(getString(R.string.something_went_wrong));
//displayMessage(json);
else
displayMessage(getString(R.string.please_try_again));
else
displayMessage(getString(R.string.please_try_again));
catch (Exception e)
displayMessage(getString(R.string.something_went_wrong));
else
if (error instanceof NoConnectionError)
displayMessage(getString(R.string.oops_connect_your_internet));
else if (error instanceof NetworkError)
displayMessage(getString(R.string.oops_connect_your_internet));
else if (error instanceof TimeoutError)
registerAPI();
)
@Override
public Map<String, String> getHeaders() throws AuthFailureError
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("X-Requested-With", "XMLHttpRequest");
return headers;
;
AayoCabApplication.getInstance().addToRequestQueue(jsonObjectRequest);
【问题讨论】:
您的应用程序的实际错误如何?控制台、屏幕等 我已经在 android 应用程序中使用响应编辑了问题。 @pmiranda 【参考方案1】:409 冲突
表示由于目标资源当前状态冲突,请求无法处理。
几个假设的例子:
-
用户想要将文件添加到文件夹,但该文件夹尚不存在。
当您尝试删除非空存储桶时,Amazon S3 会使用它。
您正在创建新的博客文章,但它引用了已删除的类别。
上传比服务器上已有文件更旧的文件。
详情https://httpstatuses.com/409
【讨论】:
【参考方案2】:API 的端点有问题。通过将api/provider/register
更改为api/provider/sth
解决了这个问题。这是由于在 laravel 中使用了预定义的变量。
【讨论】:
【参考方案3】:在使用 volley 时查看此解决方案
此错误 409 冲突是客户端错误是由使用预定义变量引起的,并且发生在某些网络上 解决方案是在您的 appconfig 中重命名 URL 地址 php 文件,例如 register.php 为 registerAccount.php。
希望对你有帮助
【讨论】:
以上是关于仅在注册期间仅在 wifi 上出现 409 冲突错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 Tsung 进行 Tigase 负载测试。注册冲突 409
CFNetwork SSLHandshake 仅在 3G/4G 上失败(-9806)(不在 Wifi 上)
带有file.getline的“访问冲突写入位置”? (仅在发布版本中)