2016-12-20 4 views
1

サードパーティAPIの機能のため、リダイレクトを回避するために、Cookieを介してメッセージをサーバーから戻す必要があります。ConnectionRequestで受信したCookieは、iOSとAndroidで異なります。

サーバは「メッセージ」と呼ばれるクッキーにメッセージを入れている場合は、私がConnectionRequestからそれを集めることだし、後にユーザに表示するためにそれを保存します。

このコードは接続要求を行い、受信したCookieを記録します。

 ConnectionRequest makeRequest = new ConnectionRequest(postURL, true) { 
      @Override 
      protected void cookieReceived(Cookie c) { 
       Log.p(c.getName()); 
       Log.p(c.getValue()); 
       if (c.getName().equals("message")) { 
        //Save message for display here 
       } 

      } 

     }; 

アンドロイドとシミュレータでは、「メッセージ」というCookieが1つだけログに記録され、正常に動作します。 iOSでは、「PHPSESSID」という1つのCookieしかログに記録されないため、メッセージは収集または保存されません。サーバはユーザエージェントまたはそのような何かに基づいてその応答を変更しません

、それだけで要求を処理し、適切なメッセージでクッキーを設定し、正しいエンドポイントにリダイレクトを返します。上記のコードは、異なるプラットフォーム上のコードネームの1つのクライアントによって異なる方法で処理されているようです。

受信したすべてのCookieが上記のコードで記録され、Android、iOS、およびシミュレータが同じ機能を果たすことが期待されます。

iOSで 'メッセージ' Cookieを取得するにはどうすればよいですか?

答えて

0

私は両方とも同じクッキー値を受け取り、それぞれがクッキーの1つを無視すると仮定しているので、ふたつの場合の動作が壊れているようです。試してみて、問題がgetHeadersやクッキーの実装であるかどうかを確認するために、接続要求にこのコードを追加してください:

protected void readHeaders(Object connection) throws IOException { 
    String[] values = getHeaders(connection, "Set-Cookie"); 
    if(values != null) { 
     Log.p(values.length + " cookies in URL:"); 
     for(String s : values) { 
      Log.p(s); 
     } 
    } else { 
     Log.p("Null cookies for connection"); 
    } 
} 

この結果に応じて、私は答えを修正します。私はシミュレータとiOSの両方から結果を見たいと思います。質問を編集して下の結果を貼り、ここにコメントして、変更が行われたことを確認してください。

関連する問題