2014-03-27 33 views
0

我正在將curl命令轉換爲Java時遇到問題。下面是我的捲曲將Curl命令轉換爲Java時的響應403

curl https://api.XXXX.com/authorizations \ 
-u john:doe -d '' \ 
-H 'Accept: application/vnd.drivr.v2+json' \ 
-H 'Content-type: application/json' 

,我已經用這個試過相當於Java這樣直

 String stringUrl = "https://api.XXXX.com/authorizations"; 
     URL url = new URL(stringUrl); 
     URLConnection uc = url.openConnection(); 

     String userpass = "john" + ":" + "doe"; 
     //String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes())); 
     String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes("UTF-8")); 

     uc.setRequestProperty("Authorization", basicAuth); 
     uc.setRequestProperty("Accept", "application/vnd.drivr.v2+json"); 
     uc.setRequestProperty("Content-type", "application/json"); 

     System.out.println("url is: "+uc.getURL().toString()+" "+basicAuth); 
     InputStream inputStreamReader = uc.getInputStream(); 

它已經快2天。它總是給我403迴應。我不確定我會在哪裏出錯。任何幫助,將不勝感激。謝謝。

回答

0

你的註釋行看起來比XML綁定的東西好很多。

在將來嘗試將其改爲

String basicAuth = "Basic " + new String(Base64.encodeBase64(userpass.getBytes()));

此外,運行curl命令與「-v」,看看它正在請求頭。然後你可以在那裏檢查授權標題,並將它與你在Java代碼中生成的授權標題進行比較。

0

我可以看到你的curl命令有-d ''參數。這意味着http POST請求。

但是你的java代碼正在向服務器做GET請求。因此,請更改您的java代碼,以便它可以執行POST請求。它會解決你的問題。