как анализировать выбранные пользователем данные в activity

#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);

        }

});