Erro de API do Instagram 500 hashtags UTF-8 com assinatura imposta
Estou recebendo 500 erros de uma simples solicitação GET do instagram. Meu código funciona quando a hashtag contém caracteres ASCII normais ou quando meu aplicativo tem a caixa de seleção "Aplicar solicitações assinadas" desmarcada. Mas não consigo fazer nada funcionar quando tento com uma hashtag utf8 e solicitações assinadas aplicadas. Vi que solicitações assinadas serão obrigatórias em breve, então preciso que funcione. Quero obter todas as imagens de uma tag como # über.
public static String signRequest(String key, String data) throws Exception {
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256");
sha256_HMAC.init(secret_key);
return Hex.encodeHexString(sha256_HMAC.doFinal(data.getBytes("UTF-8")));
}
public static void getLatestImagesForHashtag(String hashtag, String client_id, String secret) throws Exception {
String endpoint = "/tags/" + URLEncoder.encode(hashtag, "UTF-8") + "/media/recent";
String request_data = endpoint + "|client_id=" + client_id;
System.out.println("SIGNING DATA: " + request_data);
String signature = InstagramUtil.signRequest(secret, request_data);
System.out.println("SIG VAL: " + signature);
String url = "https://api.instagram.com/v1" + endpoint + "?client_id=" + client_id + "&sig=" + signature;
URL obj;
try {
obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
//Blah blah blah
E a resposta que recebo
Info: SIGNING DATA: /tags/%C3%BCber/media/recent|client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Info: SIG VAL: 503fd3fb7072eea8284576940b3fe75125a5bbbd9f505f22507776cbb6760d5d
Info: Sending 'GET' request to URL : https://api.instagram.com/v1/tags/%C3%BCber/media/recent?client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&sig=503fd3fb7072eea8284576940b3fe75125a5bbbd9f505f22507776cbb6760d5d
Info: Response Code : 500
Info: Response Msg : INTERNAL SERVER ERROR
A resposta dos dados é: Ops, ocorreu um erro.
Eu tentei muitas combinações diferentes de codificação da hashtag no terminal e nos dados da assinatura. É estranho que eu receba um erro 500 e não um 403 se for um problema de assinatura. Estou fazendo algo errado com a codificação?