2016-07-05 65 views
1

我想用Java編程CURL Webservice客戶端,但它不起作用。CURL和JAVA錯誤

我想使這個

curl "https://api.esios.ree.es/archives" -X GET \ 
-H "Accept: application/json; application/vnd.esios-api-v1+json" \ 
-H "Content-Type: application/json" \ 
-H "Host: api.esios.ree.es" \ 
-H "Authorization: Token token=\"96c56fcd69dd5c29f569ab3ea9298b37151a1ee488a1830d353babad3ec90fd7\"" \ 
-H "Cookie: " 

客戶端讓我用com.sun.jersey.api.client.Client和ClientResponse一個小程序,但失敗。 的例子是:

Client client = Client.create(); 
WebResource webResource =client.resource("https://api.esios.ree.es/archive"); 
MultivaluedMap queryParams = new MultivaluedMapImpl(); 
queryParams.add("Accept", "application/json; application/vnd.esios-api-v1+json"); 
queryParams.add("Content-Type", "application/json"); 
queryParams.add("Host", "api.esios.ree.es"); 
queryParams.add("Authorization", "Token token=\"96c56fcd69dd5c29f569ab3ea9298b37151a1ee488a1830d353babad3ec90fd7\""); 
queryParams.add("Cookie", " "); 
ClientResponse response = webResource.queryParams(queryParams).accept("application/json").get(ClientResponse.class); 
if (response.getStatus() != 200) { 
    throw new RuntimeException("Failed : HTTP error code : " 
    + response.getStatus()); 
} 

代碼響應失敗:HTTP錯誤代碼:401。非常感謝試圖幫助我。

+1

看起來你發送那些爲queryParams,而不是頭。請參閱webResource.header(name,value) – slipperyseal

+1

另外我發現在第一個代碼示例中使用了'https:// api.esios.ree.es/archives',並且在https://api.esios.ree.es/archive '在第二個 –

+0

如果該令牌很敏感,您可能不想將其發佈到代碼 – slipperyseal

回答

2

您需要將這些值作爲標題發送,而不是查詢參數。

ClientResponse response = webResource.header("Accept", "application/json; application/vnd.esios-api-v1+json") 
       .header("Content-Type", "application/json") 
       .header("Host", "api.esios.ree.es") 
       .header("Authorization", "Token token=\"TOKEN\"") 
       .header("Cookie", " ") 
       .get(ClientResponse.class); 

我們已經移除了accept()方法,因爲我們使用header()方法設置了此方法。

正如Ruslan指出的那樣,請檢查您是否正在調用正確的端點。

+0

謝謝,非常感謝。這真的很有用! – user3547469

-1

注意! client.resource route ("https://api.esios.ree.es/archive");是不正確必須是client.resource ("https://api.esios.ree.es/archives");如果不返回404 error