2017-01-15 8 views
1

ここに、接続要求を行うために書き込むコードの例を示します。 この例では、忘れたときに新しいパスワードをユーザーに送信しています。しかし、リクエストがサーバー側のforget.phpに送られたとき、電子メールは自動的に送信されますが、readResponseメソッドはダイアログを表示する前にあまり時間がかかりますが、これは低接続の問題ではありません。高速接続接続要求にpostResponse時間がかかる

サーバー側がジョブを完了したら、readResponseメソッドを呼び出すにはどうすればいいですか?ここ

<?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,"[email protected]","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); 


?> 

、私が返されたコードを確認し、それでも非常に遅い実行されている方法である:ここ

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); 

は次のように探してFIS「forget.php」サーバサイドスクリプトは方法の例ですしかし、ブラウザでリンクが実行され、高速

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); 

    } 

任意のヘルプ?

+0

私はそれを編集したと私は、接続を閉じることができますどのように –

答えて

0

私はこのような質問ではあまりよく分かりません(PHPに関連するtagaを追加することができます)。

これは、応答が閉じられず、読み取りがまだ応答コードで待機している場合に発生します。私はどこにあなたが200に応答コードを設定するか分からないので、ここでPHPが接続を開いているかもしれません。

あなたはシミュレータでネットワークモニタを開き、出て行くと応答がでてくる要求かを見ることができます。

+0

問題を抱えていますか? –

+0

@Override protected void handleErrorResponseCode(int code、String message){ Dialog.show( "エラー"、 "エラーコードは" + code、 "OK"、null);このコードは呼び出されませんが、URLにエラーを作成して間違いを犯した場合は404コードを送信しますが、すべてが良い場合はチェックするコードがありません } –

+0

PHPコードは有効な200応答コードを書くか、何らかの方法で応答が働いたことを示します。 –

関連する問題