Скажем, у меня есть этот API, который: < /p>
[*] требует много вещей аутентификации. < /li>
Всегда возвращает JSON, но иногда объект, а иногда и массив. Однако легко предсказать, что будет возвращено.private void sendRequest(String action, JsonObject params, FutureCallback callback) {
String nonce = "" + getNonce();
Builders.Any.B req = Ion.with(context, BASE_URL + action);
req.setBodyParameter("key", API_KEY)
.setBodyParameter("signature", getSignature(nonce))
.setBodyParameter("nonce", nonce);
if( params!=null ) {
for(Map.Entry param : params.entrySet()) {
JsonElement el = param.getValue();
if( el.isJsonPrimitive() ) req.setBodyParameter(param.getKey(), el.getAsString());
}
}
req.asJsonObject()
.setCallback(callback);
}
, который прекрасно работает, пока мне не нужно получить запрос, чтобы вместо того, чтобы быть JsonObject jsonarray :
Java.lang.classcastExcept /> < /blockquote>
Таким образом, в качестве быстрого обходного пути я могу создать два метода, которые перенаправляют поток на одно общее, но для того, чтобы облегчить ситуацию здесь, скажем, это выглядит следующим образом: < /p>
private void sendRequest(String action, JsonObject params, FutureCallback callback) {
String nonce = "" + getNonce();
Builders.Any.B req = Ion.with(context, BASE_URL + action);
req.setBodyParameter("key", API_KEY)
.setBodyParameter("signature", getSignature(nonce))
.setBodyParameter("nonce", nonce);
if( params!=null ) {
for(Map.Entry param : params.entrySet()) {
JsonElement el = param.getValue();
if( el.isJsonPrimitive() ) req.setBodyParameter(param.getKey(), el.getAsString());
}
}
req.asJsonObject()
.setCallback(callback);
}
private void sendRequest(String action, JsonObject params, FutureCallback callback) {
String nonce = "" + getNonce();
Builders.Any.B req = Ion.with(context, BASE_URL + action);
req.setBodyParameter("key", API_KEY)
.setBodyParameter("signature", getSignature(nonce))
.setBodyParameter("nonce", nonce);
if( params!=null ) {
for(Map.Entry param : params.entrySet()) {
JsonElement el = param.getValue();
if( el.isJsonPrimitive() ) req.setBodyParameter(param.getKey(), el.getAsString());
}
}
req.asJsonArray()
.setCallback(callback);
}
< /code>
Но затем Bam, появляется другая ошибка: < /p>
'sendrequest (string, jsonobject, futurecallback)' столкновения с 'sendrequest (string, jsonobject, futurecallback)'; Оба метода имеют одинаковую стирание
, кажется, эти типы были сняты во время выполнения, и виртуальная машина запуталась.
Я придумал некоторые решения ":
Я мог использовать все, что я могу использовать, но я могу использовать их, но я могу использовать их, но я могу использовать их, но я могу использовать их, но я могу использовать их, но я могу использовать их, но я могу использовать их, но я могу использовать их, но я могу использовать их. #18th Line.
[*] Я мог бы использовать string вместо этого, а затем проанализировать ее с помощью Gson ,
Я мог бы использовать другой парамет для указания типа, а затем отбрасывать мой обратный вызов
Но все они, кажется, только некоторые дешевые хаки, чтобы заставить вещи (как -то) работать. Кто -нибудь здесь знает какое -либо правильное решение этой проблемы?sendRequest(ACTION_BALANCE, null, new FutureRequest() {
@Override
public void onCompleted(Exception e, JsonObject result) {
// my code goes here
}
});
// OR just
sendRequest(ACTION_OPERATIONS, null, new FutureRequest() {
@Override
public void onCompleted(Exception e, JsonArray result) {
// my code goes here
}
});
Подробнее здесь: https://stackoverflow.com/questions/205 ... urerequest