在 Android 中调用 Web API 并接收返回值

新手上路,请多包涵

我已经用谷歌搜索了这些主题,但没有得到任何有用的信息。

我想在我的 android 项目中使用 Web API,但不知道如何从 android 或 java 调用它们

我从 这个 站点获得了一些 WEB API,想在我的 android 项目中使用。例如,一个 web api URL : /api/uname2uid/{uname}.

用户名 转换为 用户数字 ID

我想将从该 API 返回的 用户 ID 显示到 TextView 中。所以我需要返回值作为字符串或数字。请帮我这个。

编辑

我只想学习如何使用 WEB API

为了更简单: 在我的程序中,我有一个 TextView ,一个 EditText 和一个 Button

当我按下 Button 然后 TextView 将根据 EditText 字段中给出的 用户 名相应的 用户 ID 进行更新。一个工作示例对我理解这一点非常有用。

原文由 maruf 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 325
2 个回答

由于我只想显示从 API 返回的 用户 ID ,下面的解决方案适合我。

 public class MainActivity extends Activity {

    public static TextView txtUserid;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

                    Button btnUserid = (Button) findViewById(R.id.btnUserid);
        btnUserid.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                new UserNameToId().execute("https://uhunt.onlinejudge.org/api/uname2uid/almaruf");
            }
        });
    }

    protected class UserNameToId extends AsyncTask<String, Void, String> {
        @Override
        public String doInBackground(String... url) {

            try {
                URL Url = new URL(url[0]);
                URLConnection urlConnection = Url.openConnection();
                InputStream inputStream = urlConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                String str = "";
                str = bufferedReader.readLine();
                return str;
            } catch (Exception e) {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            txtUserid = (TextView) findViewById(R.id.txtUserId);
            txtUserid.setText(result);
        }
    }
}

原文由 maruf 发布,翻译遵循 CC BY-SA 4.0 许可协议

一个简单的异步调用会为你做这件事。:

主活动.java

 new YourAsync(){

            protected void onPostExecute(Object[] result) {

                String response = result[1].toString();
                try{
                JSONObject jsonObject=(new JSONObject(jsonResult)).getJSONObject("data"); //Parsing json object named 'data'
                yourTextView.setText(jsonObject.getString("uname"));
        }.execute(YourURL);

你的Async.java

 public class YourAsync extends AsyncTask<String, Integer, Object[]> {

    @Override
    protected Object[] doInBackground(String... params) {
        // TODO Auto-generated method stub

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(params[0].toString());
        Log.d("http client post set","");

        try{
            HttpResponse response = httpclient.execute(httppost);
            Log.d("YourAsync","Executed");
            return new Object[]{response, new BasicResponseHandler().handleResponse(response)};
        }catch(Exception e){
            Log.d("" + e, "");
        }
        return new Object[0];
    }

原文由 1binary0 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题