2017-12-17 17 views
0

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

} 
+0

XMLの代わりにJSONの 'MediaType'を指定するとどうなりますか? –

+1

@MikeNakisこんにちはマイク、ちょうど同じこと –

+0

まず、インターフェイス(ListではなくArrayList)でプログラムします。次に、レスポンスを見てください:https://api.fixer.io/latest/これはXMLではなくJSONです。したがって、XMLを要求しないでください。第3に、あなたが見るように、レートは文字列のリストではありません。 String型のキーとnumber型の値を持つオブジェクトの配列です。これは通常JSONマッパーによってMap としてマップされ、ArrayList としてではありません。 –

答えて

0

まず、インターフェイス(Listではなく、ArrayList)でプログラムします。

次に、応答をhttps://api.fixer.io/latestに見てください。これはXMLではなくJSONです。したがって、XMLを要求しないでください。

第3に、あなたが見ているように、レートはストリングのリストではありません。 String型のキーとnumber型の値を持つオブジェクトの配列です。これは通常、ArrayList<String>ではなく、Map<String, Double>としてJSONマッパーによってマッピングされます。

関連する問題