0

ばかげた質問かもしれませんが、通貨をたとえばすべてドルに変換したいと考えています。これを Web サービスとして見つけました: http://www.webservicex.net/CurrencyConvertor.asmx?op=ConversionRate

これをAndroidで使用できますか?換算レートをリクエストして、新しい通貨での金額またはレートのいずれかを取得する必要があるため、それを使用できます。

HTTP GET

The following is a sample HTTP GET request and response. The placeholders shown need to be replaced with actual values.

GET /CurrencyConvertor.asmx/ConversionRate?FromCurrency=string&ToCurrency=string HTTP/1.1
Host: www.webservicex.net
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<double xmlns="http://www.webserviceX.NET/">double</double>




HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

POST /CurrencyConvertor.asmx/ConversionRate HTTP/1.1
Host: www.webservicex.net
Content-Type: application/x-www-form-urlencoded
Content-Length: length

FromCurrency=string&ToCurrency=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<double xmlns="http://www.webserviceX.NET/">double</double

> Blockquote
4

2 に答える 2

1

これはかなり簡単なはずです。まず、Web からファイルを要求する必要があります。これは、次の例に示すように、通常の InputStreamReader を使用して実行できます

URL url = new URL("http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=USD&ToCurrency=GBP");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
NodeList doubleList = doc.getElementsByTagName("double");
string ratio = doubleList.item(0).getNodeValue();
double dRatio = Double.ParseDouble(ratio);

これから、2 つの通貨間の比率を取得できます。

于 2012-12-05T19:29:07.033 に答える
0

ありがとうトーマス!最終的にはYahoo!でなんとかしました。次のクラスで:

public class CurrencyConverter {

    static Context myContext = null;
    public double result;
    public String s;
    static AppicLifeService ALS;


    public CurrencyConverter (Context context) {
        myContext = context;
        ALS=new AppicLifeService(myContext);


         }


    public double ConvertCurrency (double amount, String from, String to){
        result=0;
        if (from==to){result=amount;} 
     else
     {
        try {


        s = getJson("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22"+from+to+"%22)&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=");                      

        JSONObject jObj;
        jObj = new JSONObject(s);
        String exResult = jObj.getJSONObject("query").getJSONObject("results").getJSONObject("rate").getString("Rate");

        double exchangerate=Double.parseDouble(exResult);

        result=amount*exchangerate;


        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            ALS.Toast(myContext.getString(R.string.conversionerror), false);
        }
        catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            ALS.Toast(myContext.getString(R.string.conversionerror), false);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            ALS.Toast(myContext.getString(R.string.conversionerror), false);
        }                                                    
    }
    return result;  

}                               


public String getJson(String url)throws ClientProtocolException, IOException {

StringBuilder build = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse response = client.execute(httpGet);
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
String con;
while ((con = reader.readLine()) != null) {
    build.append(con);
}
return build.toString();
}
}
于 2012-12-07T20:17:52.853 に答える