ConnectionRequest занять время, чтобы ответить

Вот пример кода, который я пишу, чтобы сделать запрос на соединение.
В этом примере я отправляю новый пароль пользователю, когда он его забывает. Но я понял, что когда запрос отправляется на серверную часть Forgot.php, электронное письмо отправляется автоматически, но метод readResponse занимает слишком много времени перед отображением диалогового окна, это не проблема с низким соединением, потому что я проверил его с очень высоким уровнем скорость соединения

Можете ли вы сказать, что нужно сделать, чтобы метод readResponse был вызван после того, как сторона сервера выполнила свою работу?

ConnectionRequest requette=new ConnectionRequest(){
Map data;

@Override
protected void postResponse(){

String donnees=(String)data.get("reponse");
Dialog.show("", "An email has been sent to you on "+em+"\nPlease check it to found out your password", "OK",null);

}

@Override
protected void readResponse(InputStream input)throws IOException{

JSONParser parser=new JSONParser();
data=parser.parseJSON(new InputStreamReader(input));}};

requette.setUrl(new ServerUrl().getServerUrl()+"/forget.php");
requette.setPost(true);
requette.setTimeout(15000);
requette.addArgument("email", em);

requette.setDisposeOnCompletion(new LoadingDialog(new Form()));
NetworkManager.getInstance().addToQueueAndWait(requette);

Вот пример того, как серверный сценарий «Forgot.php» выглядит так:

<?php

include("connexion_base.php");
$email=mysql_escape_string($_POST["email"]);

$select=mysqli_query(connection(),"select * from users where email='$email'");if($r=mysqli_fetch_array($select)){
$pw=$r["pw"];

mail($email,"foganbidi","Your  password is:\n$pw\n","From:foganbidi");
$sms.="Your  password is:$pw";}else{
mail($email,"foganbidi@gmail.com","The email you submited does not exist in our database","From:foganbidi");
$sms.="The email you submited  does not exist in our database";

}$data=array("reponse"=>$sms);
header("Content-Type:application/json");
echo json_encode($data);?>

вот как я проверяю код, который возвращается, но все еще работает очень медленно, но в браузере ссылка работает быстро

int rc=this.getResponseCode();
if(rc==200){

System.out.println("the code is "+rc);
JSONParser parser=new JSONParser();
InputStreamReader is=new InputStreamReader(input);
data=parser.parseJSON(is);
System.out.println("the data is "+data);}

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

#

private void connect() {
ConnectionRequest r=new ConnectionRequest(){

Map data;@Override
protected void handleException(Exception err){
System.out.println("error coming from exception "+err.getMessage());
}

@Override
protected void handleRuntimeException(RuntimeException err){
System.out.println("error coming from runtime "+err.getMessage());
}

@Override
protected void handleErrorResponseCode(int code, String message){
System.out.println("ther response code is "+code+" and the message is "+message);
}

@Override
protected void postResponse(){

System.out.println("ok for the data "+data);
}

@Override
protected void readResponse(InputStream input)throws IOException{

int rc=this.getResponseCode();
if(rc==200){JSONParser parser=new JSONParser();
InputStreamReader is=new InputStreamReader(input);
data=parser.parseJSON((Reader)is);}}

};

r.setUrl("http://localhost/craig/test2.php");
r.setTimeout(5000);
r.setPost(true);

r.addArgument("nom", "faugan");

InfiniteProgress progression=new InfiniteProgress();
Dialog dd=progression.showInifiniteBlocking();
r.setDisposeOnCompletion(dd);
NetworkManager.getInstance().addToQueue(r);

}

#

Любая помощь?

1

Решение

Я не достаточно знаком с PHP, поэтому я не совсем уверен в этом вопросе (вы можете добавить связанные теги php для некоторой помощи там).

Это произойдет, если ответ не был закрыт, и наше чтение все еще ожидает код ответа. Я не вижу, где вы устанавливаете код ответа на 200, поэтому PHP может держать соединение открытым здесь.

Вы можете открыть монитор сети в симуляторе и посмотреть, какие запросы выходят и ответы приходят.

0

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

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