#android #json
#Android #json
Вопрос:
я пытаюсь проанализировать данные json, в моем приложении у меня есть 2 выпадающих списка, из которых пользователь выбирает название страны, в которую он хочет преобразовать данные. и сумма, которую он хочет преобразовать, передается в URL. и я использую AsyncHttpClient lib для чтения данных, прежде чем использовать его в другом API, он работает отлично, но когда я меняю свой api, он запускает метод сбоя. сначала я подумал, что передал неправильный url., но на тосте я узнаю, что передаю правильный URL api.
в чем проблема, может кто-нибудь мне сказать ..??
Заранее благодарю вас.
private String API_URL = "http://devel.farebookings.com/api/curconversor/";
public void onClick(View arg0) {
final String url1 = API_URL t1.toString() "/" t2.toString() "/"
usdValue.getText().toString() "/" "json";
Toast.makeText(getApplicationContext(), url1.toString(),
Toast.LENGTH_LONG).show();
if (!usdValue.getText().toString().equals("")) {
AsyncHttpClient client = new AsyncHttpClient();
client.get(url1, new AsyncHttpResponseHandler() {
@Override
public void onFailure(Throwable arg0, String arg1) {
// TODO Auto-generated method stub
super.onFailure(arg0, arg1);
Toast.makeText(getApplicationContext(),
"unsuccess", Toast.LENGTH_LONG).show();
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
super.onFinish();
}
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
Toast.makeText(getApplicationContext(), "start",
Toast.LENGTH_LONG).show();
}
@Override
public void onSuccess(String response) {
Log.i("CHACHING", "HTTP Sucess");
Toast.makeText(getApplicationContext(), "success",
Toast.LENGTH_LONG).show();
try {
JSONObject jsonObj = new JSONObject(response);
Double usds = Double.valueOf(usdValue.getText()
.toString());
Double rate = jsonObj.getDouble("to_amount");
Toast.makeText(getApplicationContext(),
String.valueOf(rate), Toast.LENGTH_LONG)
.show();
double the_result = usds * rate;
ConvertedFrom.setText(usdValue.getText()
.toString()
" "
ConvertedFromCurr.getSelectedItem()
.toString() " = ");
ConvertedTo.setText(String.valueOf(the_result)
" "
ConvertedToCurr.getSelectedItem()
.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
} else {
Toast.makeText(getApplicationContext(),
"Please enter a Amount value!", Toast.LENGTH_LONG)
.show();
}
Ответ №1:
для междоменных вызовов API вы должны использовать jsonp.
Это пример в javascript
$.ajax({
url: "http://devel.farebookings.com/api/curconversor/EUR/GBP/1/",
dataType: 'jsonp',
success: function (data) {
alert(data.GBP);
}
});