2012-07-27 70 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