2011-01-20 16 views
0

私は自分の方法の一つに疑問があります。これは私のhttp requestsのために使用しているURIのコンポジターです。これは、最終的なStringsの別の静的クラスからデータを取り込み、それらを一緒にマージし、必要に応じてサーバートークンから受け取ったものを含みます。それはすべてのURIsトークンと唯一の、認証、それなしで起こった。私がやった:私はこのPOST_AUTH_URLような、より特殊なケースを持っているかどう方法の多くのif/else条件を避けるには?

private URI urlComposer(String apiUri, String token) { 
     URI uri = null; 
     try { 

      if(apiUri.equals("POST_AUTH_URL")) { 
       uri = URIUtils.createURI(null, MyConfig.WEB_SERVER, -1, apiUri, null, null); 
       return uri; 
      } 

      String tmp = apiUri.toString(); 
      String[] array = tmp.split("<token>"); 
      tmp = array[0] + auth.getToken() + array[1]; 

      uri = URIUtils.createURI(null, MyConfig.WEB_SERVER, -1, tmp, null, null); 

      if (MyConfig.DEBUG) Log.d("Dev", "Constructed url " + uri); 
      return uri; 
     } catch (URISyntaxException e) { 
      if (MyConfig.DEBUG) Log.d("Dev", "urlComposer was unable to construct a URL"); 
      e.printStackTrace(); 
     } 
     return null; 
    } 

は、将来的に見えるようにしようと私はより多くのif/else文を生成するためのアイデアを好きではありません。一方の手はURIを構築するために呼び出される唯一のメソッドを必要とし、もう一方はこれらを望まないものですifs。何をすればよいでしょうか?後でこのマップにアクセスすることができ

uriMap.put("POST_AUTH_URL", URIUtils.createURI(null, MyConfig.WEB_SERVER, -1, apiUri, null, null)); 

:あなたはいつものURI、のみ異なるものを設定した場合

+0

URIUtis.createURIへの2回目の呼び出しで、常にURIが上書きされますか? –

+0

修正しました。ありがとうございます。 – Eugene

答えて

2

、あなたはマップを使用することができます

uri = uriMap.get(apiUri); 
0

あなたは、理論的方法で列挙URI_TYPEを作成することができますcreateURI(提供されたコードスニペットから実際のパラメータを導き出すことは困難です)。この方法では、特定のenum値に対してこのメ​​ソッドを呼び出すだけで、固有の実装を持つことになります。

詳細については、thisおよびthisを参照してください。それが役に立てば幸い。

関連する問題