2012-12-05 113 views
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 

回答

1

這應該是相當容易的。首先,你必須要求從網上的文件,這樣就可以使用普通的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); 

從這你就可以得到兩種貨幣之間的比率。

0

謝謝Thomas!我最終通過雅虎管理。與以下類別:

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