2017-07-05 12 views
0

私はUdacityのAndroid開発コースに含まれるこのクラス/メソッドを理解しようとしていますが、私はいくつかの行で混乱しています。私はString Param_QUERY = "q"がどのように動作し、どのような説明を探しているのだろうかと思っていました。また、PARAM_SORTとsortByについても混乱しました。これらの3つの変数の説明とその使用方法は非常に高く評価されます。ありがとうございました。ビルドURL-いくつかの行の混乱

public class NetworkUtils { 

    final static String GITHUB_BASE_URL = 
      "https://api.github.com/search/repositories"; 

    final static String PARAM_QUERY = "q"; 

    final static String PARAM_SORT = "sort"; 
    final static String sortBy = "stars"; 

/** 
* Builds the URL used to query Github. 
* 
* @param githubSearchQuery The keyword that will be queried for. 
* @return The URL to use to query the weather server. 
*/ 
public static URL buildUrl(String githubSearchQuery) { 

    Uri builtUri = Uri.parse(GITHUB_BASE_URL).buildUpon() 
      .appendQueryParameter(PARAM_QUERY, githubSearchQuery) 
      .appendQueryParameter(PARAM_SORT, sortBy) 
      .build(); 

    URL url = null; 
    try { 
     url = new URL(builtUri.toString()); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } 

    return url; 
} 

答えて

0

URL内部で使用されるのparamsを追加します。これは、実際にAndroidの問題ではありませんが、私は何が起こっているかを説明しますようになります。これは、RESTエンドポイントである、とあなたはGitHubの上でそのページを照会するとき、それはのに置き換えq=githubSearchQueryを通過した検索文字列と、リポジトリを検索

https://api.github.com/search/repositories?q=githubSearchQuery&sort=stars 

:まず、どのようなコードがやっていることのように文字列を構築していますあなたの入力を進め、sort=starsに従って星の数でソートして結果を並べ替えます。さて、次のようにJavaの部分が動作します。

appendQueryParameter(PARAM_SORT, sortBy) 

簡単なケースでは、定数文字列で、これはsort=stars一部を指定し、加えて任意の他のパラメータとチェーンに&を必要と追加されます。

appendQueryParameter(PARAM_QUERY, githubSearchQuery) 

これには、appendQueryParameter()も有効なHTMLクエリパラメータにあなたの文字列を狂わせる、q=githubSearchQueryについても同様であるが、これは、ユーザ入力されているため、文字列にスペースやその他の特殊文字があるかもしれません。したがって、& = /?を検索すると、クエリパラメータq=%26+%3D+%2F%3Fが取得されます。

ちなみに、q=の部分は標準ではなく、クエリのための規約(Googleも同様です)、sort=starsはGitHub固有のオプションです。

+0

これは問題を解決します。ご協力ありがとうございました! – Eric101

0

それはあなたのURLは次のようになり、appendQueryParameterは

https://api.github.com/search/repositories?q=githubSearchQueryValue&sort=stars 
関連する問題