2012-07-27 116 views
1

儘管我在java中爲web搜索檢查了以前對azure身份驗證的答案,但即使帳戶密鑰與我在Windows Azure Marketplace中的配置文件中的密鑰完全相同,我仍然得到HTTP錯誤代碼:401 。我嘗試生成一個新的,但也沒有工作。Java中的Windows Azure身份驗證

所以任何幫助將非常感激。

這裏是Java代碼(類似於其他人都用它):

String bingUrl = "https://api.datamarket.azure.com/Bing/Search/Web?Query='multiple'&$top=4&$skip=1&$format=json"; 

     String accountKey = "key"; 
     byte[] encoding = Base64.encodeBase64((accountKey + ":" + accountKey).getBytes()); 
     String accountKeyEnc = new String(encoding); 

     URL url = new URL(bingUrl); 
     URLConnection urlConnection = url.openConnection(); 
     urlConnection.setRequestProperty("Authorization", String.format("Basic ", accountKeyEnc)); 

     BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); 
     String inputLine; 
     StringBuffer sb = new StringBuffer(); 
     while ((inputLine = in.readLine()) != null) 
      System.out.println(inputLine); 
     sb.append(inputLine); 
     in.close(); 
     System.out.println(sb.toString()); 

和錯誤代碼,我得到的是:

產生java.io.IOException:服務器返回的HTTP響應代碼:401爲URL: https://api.datamarket.azure.com/Bing/Search/Web?Query= '多個' & $頂= 4 & $跳過= 1種& $格式= JSON 在sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知(WebSample.java:19)在queryengines.WebSample.DisplayResults(WebSample.java:37) (位於http://go.microsoft.com/fwlink/?LinkId=)(位於 處,位於處)

回答

1

我不是Java專家,但不應該改變對此的String.format調用嗎?

String.format("Basic %s", accountKeyEnc) 
+0

謝謝,即使在我嘗試在我的Ubuntu機器上並沒有工作,但在Windows似乎是問題之前,這是問題。 奇怪的是,在Ubuntu中,https協議可能會導致我懷疑這個問題。 – Besnik 2012-07-27 10:17:39

+0

但這是否解決你的401錯誤? – 2012-07-27 10:19:04

+0

是的,正是這樣,現在我看到,以前我沒有把%s放在'基本'之後。這似乎解決了它。非常感謝您的快速回復。 – Besnik 2012-07-27 10:22:21