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