

Androidのkotlinでコードを書いています。  
アクセストークンからgithubのユーザーネームを取得したいのです。

[code]

    curl https://api.github.com/user? --user username:[token]
    
[/code]

curlだと上記の表現で取得したい情報を取得できます。このリクエストをkotlinで表現するとどのように書けばよろしいのでしょうか？下記にアクセストークンを引数にしてユーザーネーム取得するメソッドを書いたのですがリクエストを送信できません。おそらくURLの記述部分に「--user」というcurlのコマンドを入れているのが原因かと思われます。curlのコマンド部分はHttpURLConnectionだとどのように記述するのでしょうか？いずれかを教えていただけたら幸いです。

[code]

    private fun GetUserName(token: String): String {
        var userName = ""
        try {
            val url = URL("https://api.github.com/user? --user username:$token")
            //接続用HttpURLConnectionオブジェクト作成
            var connection: HttpURLConnection = url.openConnection() as HttpURLConnection
            try {
                //接続タイムアウトを設定する。
                connection.connectTimeout = 100000
                //レスポンスデータ読み取りタイムアウトを設定する。
                connection.readTimeout = 100000
                //ヘッダーにAccept-Languageを設定する。
                connection.setRequestProperty("Accept-Language", Locale.getDefault().toString())
                //ヘッダーにContent-Typeを設定する
                connection.addRequestProperty("Content-Type", "application/json; charset=UTF-8")
                // リクエストメソッドの設定
                connection.requestMethod = "GET"
                // リダイレクトを自動で許可しない設定
                connection.instanceFollowRedirects = false
                // URL接続からデータを読み取る場合はtrue
                connection.doInput = true
                // URL接続にデータを書き込む場合はtrue
                connection.doOutput = false
                // 接続
                connection.connect()
                // レスポンスコードの取得
                val code = connection.responseCode
                //Log.d("レスポンスコードは", code);
    
                if (code == 204) {
                    Log.d(TAG, "受信成功")
                }
    
                // サーバーからのレスポンスを標準出力へ出す
                val reader = BufferedReader(InputStreamReader(connection.getInputStream()))
                var xml = ""
                var line: String
    
                while (reader.readLine() != null) {
                    line = reader.readLine()
                    xml += line
                    Log.d(TAG, line)
                }
    
                Log.d(TAG, "取得した情報一覧$xml")
                reader.close()
    
[/code]


CC BY-SA 4.0
2018-05-16T16:40:43.873
44023
2018-05-17T02:09:09.533
2018-05-16T17:00:21.597
3060
26843
question
android java http kotlin curl
curlのリクエストはHttpURLConnectionでどう表現するのか


`Authorization`ヘッダーを付加して下さい。

以下を追加すれば、いいと思います。

[code]

    connection.setRequestProperty("Authorization", "token " + token)
    
[/code]

それから、次の行ですが、

[code]

    val url = URL("https://api.github.com/user? --user username:$token")
    
[/code]

`java.net.URL`のコンストラクタの引数はURLを表す文字列なので、cURLのオプションを追加してもダメです。あと、`?`は不要です。以下で十分です。

[code]

    val url = URL("https://api.github.com/user")
    
[/code]

`java.net.URL`については、Javadocを参照下さい。  
<https://docs.oracle.com/javase/8/docs/api/java/net/URL.html>

GitHub APIについては、以下を参照下さい。  
<https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-
apps/>


CC BY-SA 4.0
2018-05-17T01:55:00.680
44030
2018-05-17T02:09:09.533
2018-05-17T02:09:09.533
21092
21092
44023
answer