1

我正在开发一个 Android 应用程序,它能够在 WordPress 网站上注册用户并通过使用安装在 WordPress 上的JSON API AuthJSON API 用户插件发送 http 请求“GET 方法”来更新他们的 user_meta_vars。

问题是要注册用户,我必须:

1- 请求获取 nonce id:“DomainName/api/get_nonce/?controller=user&method=register” 这将返回一个带有 nonce id 的 json。

2- 注册用户的另一个请求:“DomainName/api/user/register/?username=john&email=john@domain.com&nonce=TheIdFromPreviousRequest&display_name=John”。

至此,用户已注册。

现在我想更新他的 user_meta_vars

3- 使用来自注册 http 请求的 cookie 更新用户元数据的请求:“DomainName/api/user/update_user_meta_vars/?cookie=COOKIE-HERE&website=user-website.com&city=Chicago&country=USA&skills=php,css,js,web”

现在你看到每个请求都依赖于前一个请求中的值,我这样做的方式是创建 3 个 AsyncTask,第一个将发出请求,当它得到响应时,另一个将从响应中的数据开始。

我正在使用的 AsyncTask 取自HERE

class RequestTask extends AsyncTask<String, String, String>{

    @Override
    protected String doInBackground(String... uri) {
        HttpClient httpclient = new DefaultHttpClient();
        HttpResponse response;
        String responseString = null;
        try {
            response = httpclient.execute(new HttpGet(uri[0]));
            StatusLine statusLine = response.getStatusLine();
            if(statusLine.getStatusCode() == HttpStatus.SC_OK){
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                response.getEntity().writeTo(out);
                responseString = out.toString();
                out.close();
            } else{
                //Closes the connection.
                response.getEntity().getContent().close();
                throw new IOException(statusLine.getReasonPhrase());
            }
        } catch (ClientProtocolException e) {
            //TODO Handle problems..
        } catch (IOException e) {
            //TODO Handle problems..
        }
        return responseString;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        //Do anything with response..
    }
}

我的问题是:最好的方法是什么,有什么方法可以使用 php 文件来处理所有请求,或者 Android 中是否有任何类或函数可以以正确的方式执行此操作,或者我的方式是唯一的解决方案吗?

注意:我正在更新的 user_meta_vars 是我添加的自定义字段,在请求注册时无法填写数据。

谢谢你们

4

0 回答 0