2015-01-01 49 views
13

Google arama API'sı için basit bir jarse dinlenme istemcisi yapmaya çalışıyorum. Fark ettiğiniz gibiJersey dinlenme istemcisi sorgu parametrelerini eklemiyor

Client client = ClientBuilder.newClient(); 
WebTarget target = client.target("https://www.googleapis.com/customsearch/v1"); 
target.queryParam("q", "mobile"); 
Response response = target.request().get(); 
System.out.println(response.readEntity(String.class)); 

Ben key ve cx dahil etmedik. Bunun için endişelenme, sadece basit bir demo. url https://www.googleapis.com/customsearch/v1?q=mobile ziyaret ederken , yanıt ben key ve cx dahil değildir beri doğrudur

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "usageLimits", 
    "reason": "dailyLimitExceededUnreg", 
    "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.", 
    "extendedHelp": "https://code.google.com/apis/console" 
    } 
    ], 
    "code": 403, 
    "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup." 
} 
} 

olduğunu. Yukarıdaki kodu çalıştırmak zaman bu target.queryParam("q", "mobile"); ekledik rağmen, ben alıyorum yanıtı, tüm parametreler (https://www.googleapis.com/customsearch/v1) olmadan URL'yi ziyaret eşdeğerdir

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "required", 
    "message": "Required parameter: q", 
    "locationType": "parameter", 
    "location": "q" 
    } 
    ], 
    "code": 400, 
    "message": "Required parameter: q" 
} 
} 

olduğunu. Yanlış bir şey mi yapıyorum?

kodu yukarıdaki mavenized projeye ait olup bağımlılık

<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-client</artifactId> 
    <version>2.14</version> 
</dependency> 

cevap

23

zincir çağrı dokümanlardan

Response response= client.target("https://www.googleapis.com/customsearch/v1") 
.queryParam("q", "mobile").request().get(); 

geçerli:

İade: Yeni bir hedef örneğini .

Not: - o zaman yeni oluşturulan olsun webtarget örneği zincirleme ve kullanmak etmiyorsa.

WebTarget webTarget = client.target(snapshotGeneratorUrl); 
webTarget = webTarget.queryParam("foo","foo").queryParam("bar",bar); 
Response response = webTarget.request().get(); 
+1

olarak uriBuilder örneğini sağlayabilir. Aynı örneği yalnızca zincirleme için kullanılabilecek şekilde döndürdüğünü düşündüm. Teşekkürler dostum. – alkis

+0

ouch, bu kötü – CupawnTae

+1

Bu cevap daha fazla upvotes –

1

yerine UriBuilder kullanmak ve bunu yeni bir örneğini oluşturacağını fark etmedi client.target

İlgili konular