Android货币转换

时间:2012-12-05 19:14:20

标签: android post get currency

可能是一个愚蠢的问题,但我希望将货币转换为例如所有美元。 我发现这是一个网络服务: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

2 个答案:

答案 0 :(得分:1)

这应该相当容易。首先,您需要从Web请求该文件,这可以使用常规的InputStreamReader来完成,如this示例所示:

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

然后,您可以从中获得两种货币之间的比率。

答案 1 :(得分:0)

谢谢托马斯!我最终通过雅虎管理!以下课程:

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();
}
}