我正在开发一个 Android 应用程序,它能够在 WordPress 网站上注册用户并通过使用安装在 WordPress 上的JSON API Auth和JSON 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 是我添加的自定义字段,在请求注册时无法填写数据。
谢谢你们