WordPress Web サイトにユーザーを登録し、WordPress にインストールされているJSON API AuthおよびJSON API Userプラグインを使用して http リクエスト「GET メソッド」を送信することで user_meta_vars を更新できる Android アプリを開発しています。
問題は、ユーザーを登録するには、次のことをしなければならないことです。
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 つの AsyncTasks を作成することです。最初のタスクはリクエストを作成し、応答を取得すると、もう 1 つのタスクは応答からのデータで開始します。
私が使用している 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 は、私が追加したカスタム フィールドであり、登録を要求するときにデータを入力することはできません。
皆さん、ありがとうございました