-2

我有一个网址http://。所以,我必须使用用户凭据(用户名和密码)对其进行身份验证。我尝试了很多方法,但我无法获取数据。每次我得到401 error(unauthorized)。如何使用身份验证访问该http://网址。请帮帮我。如何在android中为azure网络服务验证http协议网址?

我的代码如下

DefaultHttpClient Client = new DefaultHttpClient(); 
     HttpGet httpGet = new HttpGet(
       "My-URL"); 
     httpGet.addHeader(
       "Authorization", 
       "Basic " 
         + Base64.encodeToString(unp.getBytes(), 
         Base64.NO_CLOSE)); 
     httpGet.setHeader("Content-Type", "application/json");HttpResponse response = Client.execute(httpGet); 

     System.out.println("response = " + response); 
     BufferedReader breader = new BufferedReader(new InputStreamReader(
       response.getEntity().getContent())); 
     StringBuilder responseString = new StringBuilder(); 
     String line = ""; 
     while ((line = breader.readLine()) != null) { 
      responseString.append(line); 
     } 
     breader.close(); 
     result = responseString.toString(); 
     System.out.println("responseStr = " + result); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

我得到400错误(无效的主机名)。你能帮我解决这个问题吗?

+1

你尝试过哪些方法?您是否按照https://azure.microsoft.com/en-us/documentation/articles/mobile-services-android-get-started-users/上的教程进行操作? –

+0

@ ChrisAnderson-MSFT,我用我的代码更新了查询。你能帮我解决这个问题吗?谢谢 – user1331215

+1

为什么不使用客户端移动服务提供的?我们不支持基本身份验证。您需要针对Facebook或AAD等IDP使用OAuth。 –

回答

1

Azure移动服务不支持基本身份验证(除非您自己实际进行解码)。但是,错误消息表明你没有那么远。你的URI应该看起来像https://your-website.azure-mobile.net

可能的解决方案(二选一):

  1. 切换到支持的认证方案 - 这些都在文章中列出的克里斯·安德森引用。

  2. 为支持基本认证的Azure App Service Web Apps编写网站。我建议ExpressJS +护照本 - 这里是一个教程:http://blog.modulus.io/nodejs-and-express-basic-authentication

你似乎并不被使用在Azure移动服务SDK,所以这应该引起任何问题。但是,基本身份验证相对来说是不安全的,所以我建议您查看Chris建议的备用身份验证机制。