php отправляет смс и электронную почту 3 раза (используя Android в качестве внешнего интерфейса и отправляя запрос на сервер с помощью залпа)

Я пытаюсь отправить смс через way2sms api и почту через
phpmailer api, но проблема в том, что я получаю 3 смс и 3 письма, когда
я запускаю php.

 <?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$status = $_POST['status'];
$uname  = $_POST['uname'];
$dept   = $_POST['dept'];
$ename  = $_POST['ename'];

require_once('dbConnect.php');

$sql      = "SELECT name,email FROM user WHERE mobile='" . $uname . "'";
$check    = mysqli_fetch_row(mysqli_query($con, $sql));
$username = $check[0];
$email    = $check[1];

require_once 'smsapi/way2sms-api.php';
sendWay2SMS('username', 'password', $uname,' Message');

require_once 'mailapi/PHPMailerAutoload.php';
$mail = new PHPMailer;

$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host       = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth   = true; // Enable SMTP authentication
$mail->Username   = '[email protected]'; // SMTP username
$mail->Password   = 'password'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port       = 587; // TCP port to connect to
$mail->setFrom('[email protected]', 'Name');
$mail->addAddress($email, $username);
$mail->isHTML(true);
$mail->Subject = 'Subject';
$mail->Body    = 'Message';
!$mail->send();
}
?>

Все остальные базы данных и другой код работает правильно. Когда я только пытаюсь
чтобы отправить смс, используя приведенный ниже код, он отправляет только одно сообщение

<?php
require_once 'smsapi/way2sms-api.php';
sendWay2SMS('username', 'password', $uname,' Message');
?>

Или когда я только пытаюсь
чтобы отправить электронное письмо, используя указанный ниже код, он отправляет только одно письмо

<?php
require_once 'mailapi/PHPMailerAutoload.php';
$mail = new PHPMailer;

$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host       = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth   = true; // Enable SMTP authentication
$mail->Username   = '[email protected]'; // SMTP username
$mail->Password   = 'password'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port       = 587; // TCP port to connect to
$mail->setFrom('[email protected]', 'Name');
$mail->addAddress($email, $username);
$mail->isHTML(true);
$mail->Subject = 'Subject';
$mail->Body    = 'Message';
!$mail->send();
?>

Код Android

public void sendMessage(View view){
StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL1,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {

}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
try {
Toast.makeText(EventDetailActivity.this, volleyError.getMessage().toString(), Toast.LENGTH_LONG).show();
}catch (Exception e){

}
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {

String Status = ebtn.getText().toString().trim().toLowerCase();
SharedPreferences sharedPreferences = getSharedPreferences(SharedPrefConfig.SHARED_PREF_NAME,Context.MODE_PRIVATE);
String uname = sharedPreferences.getString(SharedPrefConfig.USERNAME_SHARED_PREF, null);
Map<String,String> params = new Hashtable<String, String>();
params.put("status", Status);
params.put("uname", uname);
params.put("dept", dept);
params.put("ename", name);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}

1

Решение

Volley использует RetryPolicy для обработки запросов, которые по умолчанию
отправляет запрос до 3 раз с экспоненциальным алгоритмом отката.
Так что это актуальная проблема.

Поэтому я добавил одну строку в своем классе залпов

stringRequest.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

Итак, это решило проблему.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]