Lyft API Android集成?

时间:2016-02-26 02:02:22

标签: android api rest curl lyft-api

我试图以某种方式获得Lyft的价格。这是Lyft的身份验证卷曲请求,然后需要请求价格:

curl -X POST -H "Content-Type: application/json" \
     --user "<client_id>:<client_secret>" \
     -d '{"grant_type": "client_credentials", "scope": "public"}' \
     'https://api.lyft.com/oauth/token'

我相信新的Android不允许HTTP客户端,所以我对如何提出这个请求感到非常困惑。我的要求一直在失败。

1 个答案:

答案 0 :(得分:0)

这是解决方案..

对我有用。看看它可能会对你有用......如果是的话通知我

private void LyftCabAPI(){//to get uber cab info in given source and destination
    class SendPostReqAsyncTask extends AsyncTask<String, Void, String> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog2 = new ProgressDialog(MainActivity.this);//
            pDialog2.setMessage("Searching Cabs.....");
            pDialog2.setIndeterminate(false);
            pDialog2.setCancelable(true);
            pDialog2.show();
        }
        @Override
        protected  String doInBackground(String...params) {
            try {
                /************** For getting response from HTTP URL start ***************/
                String url="https://api.lyft.com/oauth/token";
                URL object = new URL(url);
                HttpURLConnection connection = (HttpURLConnection) object.openConnection();
                connection.setReadTimeout(60 * 1000);
                connection.setConnectTimeout(60 * 1000);
                connection.setRequestProperty("Content-Type", "application/json");
                connection.setDoOutput(true);
                String authorization="client id"+":"+"client secret";
                byte[] __data = authorization.getBytes("UTF-8");
                String base64 = Base64.encodeToString(__data, Base64.DEFAULT);
                String encodedAuth="Basic "+base64;
                connection.setRequestProperty("Authorization", encodedAuth);

                String data =  "{\"grant_type\": \"client_credentials\", \"scope\": \"public\"}";
                OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
                out.write(data);
                out.close();

                connection.setRequestMethod("POST");
                int responseCode = connection.getResponseCode();
                //String responseMsg = connection.getResponseMessage();
                //__LfytAccessResponse=responseMsg;
                Log.v("LyftAccess", "httpStatus :" + responseCode);
                if (responseCode == 200) {
                    InputStream inputStr = connection.getInputStream();
                    String encoding = connection.getContentEncoding() == null ? "UTF-8"
                            : connection.getContentEncoding();
                    __LfytAccessResponse = IOUtils.toString(inputStr, encoding);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return "success";
        }
        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);

            Log.i(" __LfytAccessResponse", __LfytAccessResponse);
            try {
                JSONObject jsonObject = new JSONObject(__LfytAccessResponse);
                accessToken = jsonObject.getString("access_token");
              Toast.makeText(getApplicaationContext(),"Access Token:"+                              accessToken,Toast.LENGTH_SHORT).show();
            } catch (JSONException e){
                e.printStackTrace();
            }
        }
    }
    SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask();
    sendPostReqAsyncTask.execute();
}

 **Happy Coding**