Hatena::ブログ(Diary)

ねこら対策研究要塞日誌@はてな このページをアンテナに追加 RSSフィード Twitter

2017-04-19

[]Java APで画像付きToot成功 Java APで画像付きToot成功を含むブックマーク

苦節三日やっとできた

https://pawoo.net/@nekora2199/1923722

https://pawoo.net/@nekora2199/1960858

詰まっていたmedia_idsだが、横に配列を示す[]を付けるだけの事だった。

		// 画像は既にアップロード済で、以下のJSONが返ってきている。
		// {"id":155370,"type":"image","url":"https://img.pawoo.net/media_attachments/files/000/155/370/original/ab37a3d25e7419e7.jpg?1492529929","preview_url":"https://img.pawoo.net/media_attachments/files/000/155/370/small/ab37a3d25e7419e7.jpg?1492529929","text_url":"https://pawoo.net/media/zRMfXUdgXsLc6vHTEUI"}

		try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
			// つぶやき先URL設定
			String toot_url = "https://" + host_name + "/api/v1/statuses";
			logger.info(toot_url);
			HttpPost post = new HttpPost(toot_url);

			// パラメータ設定
			ArrayList<NameValuePair> params = new ArrayList<>();
			params.add(new BasicNameValuePair("access_token", access_token));
			params.add(new BasicNameValuePair("status", status));
			params.add(new BasicNameValuePair("visibility", visibility));
			params.add(new BasicNameValuePair("media_ids[]", "155370")); // ★ここで画像をPOSTした時の戻りJSONのid:を入れる

			post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));

			try (CloseableHttpResponse response = httpClient.execute(post)) {
				if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
					HttpEntity entity = response.getEntity();
					logger.info(EntityUtils.toString(entity, StandardCharsets.UTF_8));
				}
			}
		} catch (IOException e) {
			logger.log(Level.WARNING, "何か失敗した", e);
		}

もはや技術問題はすべて解決。後は画像POSTした時に帰ってくるJSONからidを取り出す所を作れば画像付きTootは出来る。そうすれば https://mstdn.jp/@nekora2199 が吠える同人誌に表紙サムネイルが付く。

JSON解析も以前Jacksonをやったが、何かもう「"id":」と「,」の間の文字列を切り出せば良いような気がするな。

→よし、完全に成功 https://pawoo.net/@nekora2199/1960858

トラックバック - http://d.hatena.ne.jp/nekora/20170419/p2