2016-03-16 41 views
0

發送GET請求後,獲取網站發送的所有信息的最佳方式是什麼?我的主要問題是我無法使用代碼登錄到Microsoft帳戶。 我已經寫了代碼,讓所有的參數: -如何登錄到Microsoft Azure門戶並獲取身份驗證碼?

import java.io.IOException; 
import java.io.OutputStreamWriter; 
import java.net.HttpURLConnection; 
import java.net.URL; 

public class Requests { 
public static void main(String[] args) throws IOException { 

    URL url = new URL("Microsoft Portal URL"); 
    HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); 
    httpCon.setInstanceFollowRedirects(false); 
    httpCon.setDoOutput(true); 
    httpCon.setRequestMethod("GET"); 
    OutputStreamWriter out = new OutputStreamWriter(httpCon.getOutputStream()); 
    System.out.println("Response Code " + httpCon.getResponseCode()); 
    System.out.println("Response Status " + httpCon.getResponseMessage()); 
    System.out.println("Header Fields " + httpCon.getHeaderFields()); 
    System.out.println("Sent URL " + httpCon.getURL()); 
    out.close(); 
} 
} 

我得到的結果如下:

Response Code 200 
Response Status OK 
Header Fields {null=[HTTP/1.1 200 OK], client-request-id=[9031e090-ea92-4581-b8d1-5b1c66076b50], 
Content-Length=[7796], Expires=[-1], 
Set-Cookie=[stsservicecookie=ests; path=/; secure; HttpOnly, 
x-ms-gateway-slice=productiona; path=/; secure; HttpOnly, 
flight-uxoptin=true; path=/; secure; HttpOnly], 
x-ms-gateway-service-instanceid=[ESTSFE_IN_217], 
X-Powered-By=[ASP.NET], Server=[Microsoft-IIS/8.5], 
Cache-Control=[no-cache, no-store], Pragma=[no-cache], 
X-Content-Type-Options=[nosniff], 
Strict-Transport-Security=[max-age=31536000; includeSubDomains], 
x-ms-request-id=[b822c62e-2aea-45b2-93c9-f1dc67576644], 
Date=[Wed, 16 Mar 2016 08:41:08 GMT], P3P=[CP="DSP CUR OTPi IND OTRi ONL FIN"], 
Content-Type=[text/html; charset=utf-8] 

我需要重定向的URI這僅當我在我登錄到Microsoft帳戶。所以我需要使用一些代碼登錄到網站。

I need this code using JAVA Code

---- >>>>事情我想要做的是: 這種格式發送一個GET請求後: GET 「https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=了{client_id} & REDIRECT_URI = {} REDIRECT_URI」

它給了我一個名爲code的參數(如果我正在使用Rest Client應用程序)。爲了獲取此代碼,用戶必須登錄到Azure門戶。

我的問題是當我用java代碼做所有這些,我沒有得到這個代碼。問題是我無法使用java代碼登錄。幫我解決這個問題。

+0

什麼是最終的結果,你正在尋找實現?有更簡單的Azure驗證方法。 –

+0

'我需要重定向URI,只有當我登錄到Microsoft帳戶時纔可用。「 - 您談論的重定向URI是什麼?你能更詳細地描述你的情況嗎? –

+0

每當我使用Rest Client發送一個REST請求時,在重定向中,我得到一個名爲To和Location的參數,在那裏我將得到一個代碼。我需要使用java代碼的重定向代碼,僅當我登錄時纔可用。 –

回答

0

在Azure上,有三組的REST API的需要進行身份驗證,包括資源管理API,服務管理API和其他特異性目的的API像Azure存儲或服務總線等

  1. 要使用資源管理API,您需要驗證Azure資源管理器請求,請參閱Authenticating Azure Resource Manager requests。 Java中有一些示例可以參考GitHub https://github.com/Azure/azure-sdk-for-java/tree/master/azure-mgmt-samples

  2. 要使用服務管理API,您需要驗證服務管理要求,請參閱Authenticating Service Management Requests。有一個官方blog顯示瞭如何開始使用Java。

  3. 要使用一些特異性目的的API,你需要構建一個Shared Access Signature令牌授予訪問權限。例如,針對Azure存儲服務REST的Delegating Access with a Shared Access Signature,可以看到Service SAS Examples知道如何構建。