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.
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.
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.
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