Jerseyを使用してREST Webサービスを使用する方法を学習しようとしています。私は、URI "https://api.fixer.io/latest"からのデータを見るためにgetリクエストを使用しています。このURIはベース、日付を表示し、私は配列/ ArrayListを信じています。私のクラスでは、私はリソースの日付と基数を表示することができました。しかし、私は項目のリストを表示するのに問題があります。私は私のコードを実行すると、それはこれを与える:外部API(REST)のGetメソッドを使用してリストを読み取る(java)
日が探しているものをイムの= 2017年12月15日、ベース= EURlist = []
例は次のようになります。= 2017から12
日-15は、ベース= EURリスト= [AUD ":、1.5382" BGN」:1.9558は(ETC)]
ここに私のコードである: restServiceClient.java
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.xml.ws.Response;
public class restServiceClient{
public static void main(String[] args) {
Client client = ClientBuilder.newClient();
Exchange exchange = client.target("https://api.fixer.io/latest")
.request(MediaType.APPLICATION_XML)
.get(Exchange.class);
String base = exchange.getBase();
String date = exchange.getDate();
ArrayList<String> theList = exchange.getRates();
//String[] excArray = theList.toArray();
System.out.print(exchange);
client.close() ;
}
}
Exchange.java
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Admin
*/
public class Exchange {
private String base;
private String date;
private ArrayList<String> rates;
public ArrayList<String> getRates() {
return rates;
}
public void setRates(ArrayList<String> rates) {
this.rates = rates;
}
public void setBase(String base) {
this.base = base;
}
public void setDate(String date) {
this.date = date;
}
public String getBase() {
return base;
}
public String getDate() {
return date;
}
@Override
public String toString() {
return "Date = " + date + ", base = "
+ base + " list = " + rates;
}
}
XMLの代わりにJSONの 'MediaType'を指定するとどうなりますか? –
@MikeNakisこんにちはマイク、ちょうど同じこと –
まず、インターフェイス(ListではなくArrayList)でプログラムします。次に、レスポンスを見てください:https://api.fixer.io/latest/これはXMLではなくJSONです。したがって、XMLを要求しないでください。第3に、あなたが見るように、レートは文字列のリストではありません。 String型のキーとnumber型の値を持つオブジェクトの配列です。これは通常JSONマッパーによってMapとしてマップされ、ArrayList としてではありません。 –