[JAVA] [MT] Spécifiez la catégorie d'article d'Android avec l'API de données

DataAPI veut publier des articles sur Android! C'est une API très importante à cette époque. Cette fois, je voudrais expliquer brièvement la spécification des catégories parmi elles.

Obtenir la catégorie d'article

String cgi_url = "http://path/to/mt-data-api.cgi;
String blog_id  = "id";
String username     = "username"
String password = "password"
String token;
ArrayList<String>  categoryLabel;
ArrayList<Integer> categoryId;
AsyncHttpClient    client;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    categoryLabel        = new ArrayList<String>();
    categoryId           = new ArrayList<Integer>();
    client               = new AsyncHttpClient();
    RequestParams params = new RequestParams();

    params.put("username", username);
    params.put("password", password);
    params.put("clientId", "test");

    String url = cgi_url.concat("/v2/authentication");
    client.post(url, params, new JsonHttpResponseHandler() {
        @Override
        public void onSuccess(JSONObject res) {
            try {
                token = res.getString("accessToken");
                Toast.makeText(act, "Vous êtes maintenant connecté", Toast.LENGTH_LONG).show();
                preferencesUtil.putInt("InitState", 1);
            } catch (Exception e) {
                Toast.makeText(act, "Erreur d'identification", Toast.LENGTH_LONG).show();
            }
        }

        @Override
        public void onFailure(Throwable e, JSONObject res) {
            Toast.makeText(act, "Erreur d'identification", Toast.LENGTH_LONG).show();
        }
    });

    url = cgi_url.concat("/v2/sites/2/categories");
    client.get(url, params, new JsonHttpResponseHandler() {
        @Override
        public void onSuccess(JSONObject json) {
            try {
                //Pour obtenir le titre
                JSONArray datas = json.getJSONArray("items");
                for(int i=0; i<datas.length(); i++) {
                    categoryLabel.add(datas.getJSONObject(i).getString("label"));
                    categoryId.add(Integer.parseInt(datas.getJSONObject(i).getString("id")));
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        @Override
        public void onFailure(Throwable e, JSONObject res) {
            Toast.makeText(act, "Erreur d'identification", Toast.LENGTH_LONG).show();
        }
    });
}

Déclarez cgi_url: DataAPI endpoint, blog_id: blog ID, ʻusername: username, password: password` dans la zone membre.

Obtenez des articles dans ʻonCreate`.

Pour vous connecter, insérez les variables membres ʻusername et passworddansRequestParams et ** post ** to cgi_url + / v2 / authentication avec ʻAsyncHttpClient.

Si vous vous connectez avec succès, vous entrerez ʻonSuccess et JSONObject sera retourné, donc enregistrez ʻaccessToken.

Pour obtenir la catégorie d'article, ** postez ** le RequestParams créé précédemment à cgi_url + / v2 / sites / 2 / categories avec ʻAsyncHttpClient`.

Si la catégorie est acquise avec succès, elle entrera ʻonSuccess, donc insérez l'élément de ʻitems dans JSONArray.

JSONArray datas = json.getJSONArray("items");

Récupérez le «label» et «id» de la catégorie enregistrée à partir des «éléments» obtenus.

for(int i=0; i<datas.length(); i++) {
    categoryLabel.add(datas.getJSONObject(i).getString("label"));
    categoryId.add(Integer.parseInt(datas.getJSONObject(i).getString("id")));
}

Vous pouvez maintenant obtenir la catégorie d'article.

Publier un article

Si vous pouvez le faire, tout ce que vous avez à faire est de publier.

    private void uploadText() throws JSONException {
        CharSequence  title  = "title";
        CharSequence  body   = "body";
        JSONObject    entry  = new JSONObject();
        RequestParams params = new RequestParams();
        JSONArray categories = new JSONArray();
        JSONObject category;
        for(int i=0; i<categoryLabel.size(); i++) {           
            category = new JSONObject();
            category.put("id",categoryId.get(i));
            categories.put(category);
        }
        try {
            entry.put("title", title);
            entry.put("body", body);
            entry.put("categories",categories);
            entry.put("status", "Draft");
        } catch (JSONException e) {
            e.printStackTrace();
        }
        params.put("entry", entry.toString());
        String url = cgi_url.concat("/v2/sites/").concat(blog_id).concat("/entries");
        Header[] headers = new Header[1];
        headers[0] = new BasicHeader("X-MT-Authorization", "MTAuth accessToken=".concat(token));
        client.post(getBaseContext(), url, headers, params, "application/x-www-form-urlencoded", new JsonHttpResponseHandler() {
            @Override
            public void onSuccess(JSONObject res) {
                Toast.makeText(act, "envoyer complètement", Toast.LENGTH_LONG).show();
            }
            public void onFailure(Throwable e, JSONObject res) {
                Toast.makeText(act, "erreur d'envoi", Toast.LENGTH_LONG).show();
            }
        });

    }

Tout d'abord, créez l'élément d'entrée «JSONObject» et «RequestParams» pour envoyer la demande d'article. Après cela, préparez JSONArray pour insérer plusieurs catégories et JSONObject pour insérer des catégories individuelles. L'entrée de catégorie est id et l'entrée de groupe de catégories est les catégories. Lorsque ** post **, envoyez en insérant «catégorie» dans «catégories». Après cela, si vous entrez le point de terminaison de ʻurletheaders défini comme params avec ʻAsyncHttpClient et l'envoyez, vous pouvez créer un article avec la catégorie enregistrée.

Supplément

Puisqu'il utilise Internet, il est dans le manifeste Android <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> N'oubliez pas de déclarer!

Recommended Posts

[MT] Spécifiez la catégorie d'article d'Android avec l'API de données
[MT] Spécifiez la catégorie d'article d'Android avec l'API de données
Essayez d'utiliser l'API Emotion d'Android
Compatible avec Android 10 (API 29)
Faire vibrer le bracelet avec Bluetooth à partir de l'application Android
Développement Android-Accès WEB (GET) Essayez d'obtenir des données en communiquant avec l'extérieur. ~
Appelez l'API Microsoft Emotion en envoyant des données d'image directement depuis Java.
SetCookie du côté client avec OkHttp3
Intégration API de Java avec Jersey Client
Accédez à l'API REST Salesforce depuis Java
Trouvez Raspberry Pi d'Android avec mDNS
Développement Android-Accès WEB (POST) Essayez de communiquer avec l'extérieur et d'envoyer des données. ~