2016-09-23 1 views
0

Ich benutze Java ee 7 auf Glassfish 4.1.1. In C# ist ein Restservice geschrieben, der eine Sammlung von Book-Instanzen zurückgibt. Der Code auf dem Rest Client-Seite, die senden bekommen Anfrage:get Liste von Objektinstanzen eines Restclientaufrufs in Java ee 7

public List<Bandwcorpus> downloadBandWCorpus(String corpus) { 
    Client restClient = ClientBuilder.newClient(); 
    List<Bandwcorpus> ebooks=restClient.target("http://bookandwalk.pl/api/admindocumentlist").queryParam("password", "XXXX").queryParam("corpusid", YYYY").request(MediaType.APPLICATION_JSON).get(new GenericType<List<Book>>() {}); 
    restClient.close(); 
    return ebooks; 

} 

Das Buch-Klasse ist ein POJO:

public class Book { 

private static final long serialVersionUID = 1L; 

private Integer documentid; 

private String corpusid; 

private String corpusoriginalid; 

private float nett; 

private String currencyid; 

private int vat; 

private Discount discount; 

private Upoluj isbn; 

public Bandwcorpus() { 
} 
} 

Meine angewendet get-Funktion basiert auf http://www.adam-bien.com/roller/abien/entry/jax_rs_returning_a_list Blog-Post, und diese Lösung wurde auch angewandt in Java EE 7 Tutorial.

Leider erhalte ich den folgenden Compiler-Fehler in diesem Fall:

error: no suitable method found for get(<anonymous com.fasterxml.classmate.GenericType<List<Book>>>) 
    List<Book> ebooks=restClient.target("http://bookandwalk.pl/api/admindocumentlist").queryParam("password", "XXXXX").queryParam("corpusid", "YYYYY").request(MediaType.APPLICATION_JSON).get(new GenericType<List<Book>>() {}); 
method SyncInvoker.<T#1>get(Class<T#1>) is not applicable 
    (cannot infer type-variable(s) T#1 
    (argument mismatch; <anonymous com.fasterxml.classmate.GenericType<List<Bandwcorpus>>> cannot be converted to Class<T#1>)) 
method SyncInvoker.<T#2>get(javax.ws.rs.core.GenericType<T#2>) is not applicable 
    (cannot infer type-variable(s) T#2 
    (argument mismatch; <anonymous com.fasterxml.classmate.GenericType<List<Book>>> cannot be converted to javax.ws.rs.core.GenericType<T#2>)) 

wo T # 1, T # 2-Typ-Variablen: T # 1 Objekt in der Methode get (Class) erklären erstreckt T # 2 erweitert Object deklariert in Methode get (javax.ws.rs.core.GenericType)

Jede Idee, was mache ich falsch, wenn dies der vorgeschlagene Weg von Oracle und anderen Experten ist?

+0

Könnten Sie Ihre Struktur für Bandwcorpus – Ironluca

+0

@Ironluca Post, es war ein Tippfehler. Überall wo Bandwcorpus ist, ist es die Buchklasse, die ich von der früheren Version kopiert habe. – Roland

+0

Versuchen Sie dies und überprüfen Sie, ArrayList obj = new ArrayList <>(); Liste ebooks = restClient.target ("http://bookandwalk.pl/api/admindocumentlist") .queryParam ("password", "XXXX"). QueryParam ("corpusid", JJJJ "). Request (MediaType.APPLICATION_JSON) .get (obj.getClass()); – Ironluca

Antwort

0

Schließlich fand ich die Lösung:

List<Book> e=restClient.target("http://bookandwalk.pl/api/admindocumentlist").queryParam("password", "XXXXXX").queryParam("corpusid_or_languagecode", "Example").request(MediaType.APPLICATION_JSON).get(new GenericType<List<Book>>() {}); 
Verwandte Themen