Как я могу получить последние данные обменного курса в java-me - PullRequest
0 голосов
/ 06 июля 2011

Я новичок в java ME, и я хочу создать приложение, которое может получать последние курсы обмена для определенной валюты онлайн, как я могу это сделать?

Мне удалось создать объект HttpConnection и извлечь данные из URL, но он не работает для Google.

Я видел пример здесь из вопроса под названием Как получить данные о реальном обменном курсе и применить их к приложению для Android . Однако, если я попробую его в мобильном приложении, он ничего не возвращает. как я могу обойти это?

String url = "http://www.google.com/ig/calculator?hl=en&q=1USD%3D%3FCAD";//test URL
c = (HttpConnection)Connector.open(url);
s = c.openInputStream();//open an input stream
if( l != -1 ) {
  for (i =0 ; i < l ; i++ )
  if((ch = s.read()) != -1){
     b.append((char) ch);
    }
}
stringItem2.setText("\n " + b.toString());

С

String url = "http://developers.sun.com/mobility/midp/articles/event/EventEx1.java";

Я могу получить данные веб-сайта, но с

String url = "http://www.google.com/ig/calculator?hl=en&q=1USD%3D%3FCAD";

я ничего не получаю

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Я бы использовал http://xurrency.com/api/ для получения актуальных обменных курсов, вам придется заплатить 29,99 за это, хотя, если вы запрашиваете его более 10 раз в день. Часть документации на странице объясняет, как использовать API. Например. чтобы получить обмен США на евро вы используете http://xurrency.com/api/usd/eur/1. Если вы введете это в свой браузер и просмотрите источник, вы увидите полученный ответ. Ответ в формате JSON.

Вам нужно будет использовать что-то вроде GSON для преобразования данных JSON в объект Java. Код для этого должен быть довольно простым, что-то вроде:

    URL url = new URL("http://xurrency.com/api/usd/eur/1");
    URLConnection yc = url.openConnection();
    BufferedReader in = new BufferedReader(
                            new InputStreamReader(
                            yc.getInputStream()));
    String jsonObject = "";
    String line;
    while ((line = in.readLine()) != null) 
        jsonObject += line;

    in.close();
    Gson gson = new Gson();
    ExchangeRate = gson.fromJson(jsonObject, ExchangeRate.class);

Класс ExchnageRate будет специальным классом, предназначенным для инкапсуляции данных, полученных из этого JSON API.

Вы можете настроить приведенный выше код для работы со ссылкой, которую используете. Попробуйте следующий код:

  import com.google.gson.Gson;
  import java.io.BufferedReader;
  import java.io.InputStreamReader;
  import java.net.URL;
  import java.net.URLConnection;

  public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("http://www.google.com/ig/calculator?hl=en&q=1USD%3D%3FCAD");
        URLConnection yc = url.openConnection();
        BufferedReader in = new BufferedReader(
                            new InputStreamReader(
                            yc.getInputStream()));
        String jsonObject = "";
        String line;
        while ((line = in.readLine()) != null) 
            jsonObject += line;

        in.close();
        System.out.println(jsonObject);
        Gson gson = new Gson();
        GoogleCurrency another = gson.fromJson(jsonObject, GoogleCurrency.class);
        another.print();
    }

  }


  public class GoogleCurrency {
     private String lhs;
     private String rhs;
     private String error;
     private String icc;

   public GoogleCurrency() {
    lhs = "0 U.S Dollar";
    rhs = "0 U.S Dollar";
    error = "true";
    icc = "false";
   }

   public GoogleCurrency(String lhs,String rhs,String error,String icc) {
    this.lhs = lhs;
    this.rhs = rhs;
    this.error = error;
    this.icc = icc;
   }

   public void print() {
    System.out.println(lhs + " = " + rhs);
   }
 }
0 голосов
/ 06 марта 2015

Найдите приведенный ниже код, который возвращает ответ json для получения коэффициента конверсии.

    HttpClient client = new HttpClient();       

    NameValuePair arg1 = new NameValuePair("method","runJob");

    //Change your currency types here in which you would want to convert

    NameValuePair arg2 = new NameValuePair("from","USD");
    NameValuePair arg3 = new NameValuePair("to", "PKR");

    //getting the method
    GetMethod method = new GetMethod("http://rate-exchange.appspot.com/currency");
    method.setQueryString(new NameValuePair[]{arg1, arg2, arg3});

    //executes the link
    client.executeMethod(method);

    //getting response in string
    JSONObject obj = new JSONObject(method.getResponseBodyAsString());

    //getting rate from the json response
    double rate = obj.getDouble("rate");

    //closing conncetion
    method.releaseConnection();     


    //returning value
    return rate;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...