[JAVA] [MT] Geben Sie die Artikelkategorie von Android mit Daten-API an

DataAPI möchte Artikel auf Android veröffentlichen! Es ist zu dieser Zeit eine sehr wichtige API. Dieses Mal möchte ich kurz die Spezifikation der Kategorien unter ihnen erläutern.

Artikelkategorie abrufen

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, "Sie sind jetzt angemeldet", Toast.LENGTH_LONG).show();
                preferencesUtil.putInt("InitState", 1);
            } catch (Exception e) {
                Toast.makeText(act, "Login Fehler", Toast.LENGTH_LONG).show();
            }
        }

        @Override
        public void onFailure(Throwable e, JSONObject res) {
            Toast.makeText(act, "Login Fehler", 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 {
                //Um den Titel zu bekommen
                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, "Login Fehler", Toast.LENGTH_LONG).show();
        }
    });
}

Deklarieren Sie "cgi_url: DataAPI-Endpunkt", "blog_id: blog ID", "Benutzername: Benutzername", "Passwort: Passwort" im Mitgliederbereich.

Sie können Artikel in onCreate erhalten.

Um sich anzumelden, fügen Sie die Mitgliedsvariablen "Benutzername" und "Passwort" in "RequestParams" ein und ** posten ** mit "AsyncHttpClient" in "cgi_url + / v2 / authentication".

Wenn Sie sich erfolgreich anmelden, geben Sie "onSuccess" ein und "JSONObject" wird zurückgegeben. Speichern Sie also das "accessToken".

Um die Artikelkategorie zu erhalten, ** poste ** die zuvor erstellten RequestParams in cgi_url + / v2 / sites / 2 / category mit AsyncHttpClient.

Wenn die Kategorie erfolgreich erworben wurde, wird "onSuccess" eingegeben. Fügen Sie daher das Element "items" in "JSONArray" ein.

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

Holen Sie sich das "Label" und die "ID" der registrierten Kategorie aus den erhaltenen "Artikeln".

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

Jetzt können Sie die Artikelkategorie erhalten.

Artikel posten

Wenn Sie dies tun können, müssen Sie nur noch posten.

    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, "vollständig senden", Toast.LENGTH_LONG).show();
            }
            public void onFailure(Throwable e, JSONObject res) {
                Toast.makeText(act, "Sendefehler", Toast.LENGTH_LONG).show();
            }
        });

    }

Erstellen Sie zunächst das Eintragselement "JSONObject" und "RequestParams", um die Artikelanforderung zu senden. Bereiten Sie danach "JSONArray" zum Einfügen mehrerer Kategorien und "JSONObject" zum Einfügen einzelner Kategorien vor. Der Kategorieeintrag ist id und der Kategoriegruppeneintrag ist Kategorien. Wenn ** post **, senden Sie durch Einfügen von "Kategorie" in "Kategorien". Wenn Sie danach den Endpunkt von "url" und "headers" eingeben, der mit "AsyncHttpClient" als "params" festgelegt wurde, und ihn senden, können Sie einen Artikel mit der registrierten Kategorie erstellen.

Ergänzung

Da es das Internet nutzt, ist es in Android Manifest <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> Vergiss nicht zu deklarieren!

Recommended Posts

[MT] Geben Sie die Artikelkategorie von Android mit Daten-API an
[MT] Geben Sie die Artikelkategorie von Android mit Daten-API an
Versuchen Sie es mit der Emotion API von Android
Kompatibel mit Android 10 (API 29)
Lassen Sie das Armbandgerät mit Bluetooth über die Android-App vibrieren
Android-Entwicklung - WEB-Zugriff (GET) Versuchen Sie, Daten durch Kommunikation mit der Außenwelt abzurufen. ~
Rufen Sie die Microsoft Emotion API auf, indem Sie Bilddaten direkt von Java senden.
SetCookie von der Client-Seite mit OkHttp3
API-Integration von Java mit Jersey Client
Rufen Sie die Salesforce REST-API von Java aus auf
Finden Sie Raspberry Pi von Android mit mDNS
Android Development-WEB Access (POST) Versuchen Sie, mit der Außenwelt zu kommunizieren und Daten zu senden. ~