Java-Beispiel: Übermittlungen für Apps, Add-Ons und Flights
Dieser Artikel enthält Java-Codebeispiele, die veranschaulichen, wie die Microsoft Store-Übermittlungs-API für diese Aufgaben verwendet wird:
- Abrufen eines Azure AD-Zugriffstokens
- Erstellen eines Add-Ons
- Erstellen eines Flight-Pakets
- Erstellen einer App-Übermittlung
- Erstellen einer Add-On-Übermittlung
- Erstellen einer Flight-Paket-Übermittlung
Sie können jedes Beispiel durchgehen, um mehr über die beschriebene Aufgabe zu erfahren, oder Sie können alle Codebeispiele in diesem Artikel in einer Konsolenanwendung erstellen. Die vollständige Codeauflistung finden Sie im Codeauflistungsbereich am Ende dieses Artikels.
Voraussetzungen
In diesen Beispielen werden die folgenden Bibliotheken verwendet:
- Apache Commons Logging 1.2 (commons-logging-1.2.jar).
- Apache HttpComponents Core 4.4.5 und Apache HttpComponents Client 4.5.2 (httpcore-4.4.5.jar und httpclient-4.5.2.jar).
- JSR 353 JSON Processing API 1.0 und JSR 353 JSON Processing Default Provider API 1.0.4 (javax.json-api-1.0.jar und javax.json-1.0.4.jar).
Hauptprogramm und Importe
Das folgende Beispiel zeigt die Importanweisungen, die von allen Codebeispielen verwendet werden, und implementiert ein Befehlszeilenprogramm, das die anderen Beispielmethoden aufruft.
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.text.MessageFormat;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpResponseException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.*;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.entity.FileEntity;
import org.apache.http.entity.StringEntity;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonReader;
public class IngestionServiceJavaSamples {
public static void main(String[] args) throws InterruptedException, URISyntaxException, IOException {
// Generate access token. Access token is valid for 1 hour. Regenerate access token when needed
String tenantId = ""; //{Your tenant ID}
String clientId = ""; //{Your client ID}
String clientSecret = ""; //{Your client secret}
String accessToken = GenerateAccessToken(tenantId, clientId, clientSecret);
// Application submission sample
String applicationId = ""; //{Your application ID}
String appSubmissionRequestJson = ""; //{Your submission request JSON}
String appSubmissionZipFilePath = ""; //{Your zip file path}
SubmitNewApplicationSubmission(accessToken, applicationId, appSubmissionRequestJson,
appSubmissionZipFilePath);
// Flight samples
String flightId = ""; //{Your flight ID}
String flightRequestJson = ""; //{Your flight request JSON}
String flightSubmissionRequestJson = ""; //{Your submission request JSON}
String flightSubmissionZipFilePath = ""; //{Your zip file path}
CreateNewFlight(accessToken, applicationId, flightRequestJson);
SubmitNewFlightSubmission(accessToken, applicationId, flightId, flightSubmissionRequestJson,
flightSubmissionZipFilePath);
// In-app-product samples
String inAppProductId = ""; //{Your in-app-product ID}
String inAppProductRequestJson = ""; //{Your in-app-product request JSON}
String iapSubmissionRequestJson = ""; //{Your submission request JSON}
String iapSubmissionZipFilePath = ""; //{Your zip file path}
CreateNewInAppProduct(accessToken, inAppProductRequestJson);
SubmitNewInAppProductSubmission(accessToken, inAppProductId, iapSubmissionRequestJson,
iapSubmissionZipFilePath);
}
}
Abrufen eines Azure AD-Zugriffstokens
Im folgenden Beispiel wird gezeigt, wie Sie ein Azure AD-Zugriffstoken abrufen, mit dem Sie Methoden in der Microsoft Store-Übermittlungs-API aufrufen können. Nach dem Abruf eines Tokens können Sie es für einen Zeitraum von 60 Minuten in Aufrufen der Microsoft Store-Übermittlungs-API verwenden, bevor es abläuft. Nach Ablauf des Tokens können Sie ein neues Token generieren.
public static String GenerateAccessToken(String tenantId, String clientId, String clientSecret) {
// Generate access token. Access token is valid for 1 hour. Regenerate access token when needed
String tokenEndpoint = "https://login.microsoftonline.com/{0}/oauth2/token";
String tokenResource = "https://manage.devcenter.microsoft.com";
HttpPost tokenRequest = new HttpPost(MessageFormat.format(tokenEndpoint, tenantId));
String tokenRequestBody = MessageFormat.format(
"grant_type=client_credentials&client_id={0}&client_secret={1}&resource={2}",
clientId, clientSecret, tokenResource);
tokenRequest.setEntity(new StringEntity(tokenRequestBody, "utf-8"));
tokenRequest.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
CloseableHttpClient httpclient = HttpClients.createDefault();
ResponseHandler<String> responseHandler = new BasicResponseHandler();
try {
String tokenResponse = httpclient.execute(tokenRequest, responseHandler);
JsonReader reader = Json.createReader(new ByteArrayInputStream(tokenResponse.getBytes("UTF-8")));
String accessToken = reader.readObject().getString("access_token");
return accessToken;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Erstellen eines Add-Ons
Das folgende Beispiel zeigt, wie Sie ein Add-On erstellen und anschließend ein Add-On löschen.
public static void CreateNewInAppProduct(String accessToken, String inAppProductRequestJson)
throws InterruptedException, IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
ResponseHandler<JsonObject> responseHandler = CreateJsonResponseHandler();
try {
// Create a new in-app-product
HttpPost createInAppProductRequest = new HttpPost(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts");
createInAppProductRequest.addHeader("Authorization", "Bearer " + accessToken);
createInAppProductRequest.addHeader("Content-type", "application/json");
createInAppProductRequest.addHeader("User-Agent", "Java");
createInAppProductRequest.setEntity(new StringEntity(inAppProductRequestJson));
JsonObject createInAppProductResponse = httpclient.execute(createInAppProductRequest,
responseHandler);
String inAppProductId = createInAppProductResponse.getString("id");
System.out.println(createInAppProductResponse.toString());
// Delete created in-app-product
HttpDelete deleteInAppProductRequest = new HttpDelete(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/" + inAppProductId);
deleteInAppProductRequest.addHeader("Authorization", "Bearer " + accessToken);
deleteInAppProductRequest.addHeader("User-Agent", "Java");
httpclient.execute(deleteInAppProductRequest, responseHandler);
} catch (HttpResponseException e){
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.close();
}
}
Erstellen eines Flight-Pakets
Das folgende Beispiel zeigt, wie Sie EIN Flight-Paket erstellen und anschließend löschen.
public static void CreateNewFlight(String accessToken, String applicationId, String flightRequestJson)
throws InterruptedException, IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
ResponseHandler<JsonObject> responseHandler = CreateJsonResponseHandler();
try {
// Create a new flight, a flight submission will be created together with the flight
HttpPost createFlightRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights", applicationId));
createFlightRequest.addHeader("Authorization", "Bearer " + accessToken);
createFlightRequest.addHeader("Content-type", "application/json");
createFlightRequest.setEntity(new StringEntity(flightRequestJson));
JsonObject createFlightResponse = httpclient.execute(createFlightRequest, responseHandler);
System.out.println(createFlightResponse.toString());
String flightId = createFlightResponse.getString("flightId");
String submissionId = createFlightResponse.getJsonObject("pendingFlightSubmission").getString("id");
// Delete created flight
HttpDelete deleteFlightRequest = new HttpDelete(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}",
applicationId, flightId));
deleteFlightRequest.addHeader("Authorization", "Bearer " + accessToken);
httpclient.execute(deleteFlightRequest, responseHandler);
} catch (HttpResponseException e){
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.close();
}
}
Erstellen einer App-Übermittlung
Das folgende Beispiel zeigt, wie Sie verschiedene Methoden in der Microsoft Store-Übermittlungs-API verwenden, um eine App-Übermittlung zu erstellen. Dazu erstellt die SubmitNewApplicationSubmission
Methode eine neue Übermittlung als Klon der letzten veröffentlichten Übermittlung und aktualisiert und führt dann einen Commit für die geklonte Übermittlung an Partner Center durch. Insbesondere führt die Methode die SubmitNewApplicationSubmission
folgenden Aufgaben aus:
- Zunächst ruft die Methode Daten für die angegebene App ab.
- Als Nächstes löscht sie die ausstehende Übermittlung für die App, wenn vorhanden.
- Anschließend wird eine neue Übermittlung für die App erstellt. (Die neue Übermittlung ist eine Kopie der letzten veröffentlichten Übermittlung.)
- Es werden einige Details für die neue Übermittlung geändert und ein neues Paket für die Übermittlung zu Azure Blob Storage hochgeladen.
- Als Nächstes wird die neue Übermittlung aktualisiert und anschließend an Partner Center gesendet.
- Schließlich wird der Status der neuen Übermittlung regelmäßig überprüft, bis die Übermittlung erfolgreich gesendet wurde.
public static void SubmitNewApplicationSubmission(String accessToken, String applicationId,
String appSubmissionRequestJson, String zipFilePath)
throws InterruptedException, IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
ResponseHandler<JsonObject> responseHandler = CreateJsonResponseHandler();
try {
// Get application
HttpGet getApplicationRequest = new HttpGet(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/" + applicationId);
getApplicationRequest.addHeader("Authorization", "Bearer " + accessToken);
getApplicationRequest.addHeader("User-Agent", "Java");
JsonObject getApplicaiontResponse = httpclient.execute(getApplicationRequest, responseHandler);
// Delete existing in-progress submission
JsonObject submissionToRemove = getApplicaiontResponse.getJsonObject(
"pendingApplicationSubmission");
if(submissionToRemove != null){
String submissionToRemoveId = submissionToRemove.getString("id");
HttpDelete deleteSubmissionRequest = new HttpDelete(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/submissions/{1}",
applicationId, submissionToRemoveId));
deleteSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
deleteSubmissionRequest.addHeader("User-Agent", "Java");
httpclient.execute(deleteSubmissionRequest, responseHandler);
}
// Create submission
HttpPost createSubmissionRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/submissions",
applicationId));
createSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
createSubmissionRequest.addHeader("User-Agent", "Java");
JsonObject createSubmissionResponse = httpclient.execute(createSubmissionRequest, responseHandler);
String submissionId = createSubmissionResponse.getString("id");
String fileUploadUrl = createSubmissionResponse.getString("fileUploadUrl");
// Update submission
HttpPut updateSubmissionRequest = new HttpPut(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/submissions/{1}",
applicationId, submissionId));
updateSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
updateSubmissionRequest.addHeader("Content-type", "application/json");
updateSubmissionRequest.addHeader("User-Agent", "Java");
updateSubmissionRequest.setEntity(new StringEntity(appSubmissionRequestJson));
JsonObject updateSubmissionResponse = httpclient.execute(updateSubmissionRequest, responseHandler);
// Upload images and packages in a zip file
UploadZipFile(fileUploadUrl, zipFilePath);
// Commit submission
HttpPost commitSubmissionRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/submissions/{1}/commit",
applicationId, submissionId));
commitSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
commitSubmissionRequest.addHeader("User-Agent", "Java");
JsonObject commitSubmissionResponse = httpclient.execute(commitSubmissionRequest, responseHandler);
System.out.println(commitSubmissionResponse.getString("status"));
// Pull submission status until commit process is completed
HttpGet getSubmissionStatusRequest = new HttpGet(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/submissions/{1}",
applicationId, submissionId));
getSubmissionStatusRequest.addHeader("Authorization", "Bearer " + accessToken);
getSubmissionStatusRequest.addHeader("User-Agent", "Java");
JsonObject getSubmissionStatusResponse = httpclient.execute(getSubmissionStatusRequest,
responseHandler);
String submissionStatus = getSubmissionStatusResponse.getString("status");
while(submissionStatus.equals("CommitStarted")){
Thread.sleep(60*1000);
getSubmissionStatusResponse = httpclient.execute(getSubmissionStatusRequest, responseHandler);
submissionStatus = getSubmissionStatusResponse.getString("status");
}
System.out.println(submissionStatus);
} catch (HttpResponseException e){
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.close();
}
}
Erstellen einer Add-On-Übermittlung
Das folgende Beispiel zeigt, wie Sie verschiedene Methoden in der Microsoft Store-Übermittlungs-API verwenden, um eine Add-On-Übermittlung zu erstellen. Dazu erstellt die SubmitNewInAppProductSubmission
Methode eine neue Übermittlung als Klon der letzten veröffentlichten Übermittlung und aktualisiert und führt dann einen Commit für die geklonte Übermittlung an Partner Center durch. Insbesondere führt die Methode die SubmitNewInAppProductSubmission
folgenden Aufgaben aus:
- Zunächst ruft die Methode Daten für das angegebene Add-On ab.
- Als Nächstes wird die ausstehende Übermittlung für das Add-On gelöscht, wenn vorhanden.
- Anschließend wird eine neue Übermittlung für das Add-On erstellt. (Die neue Übermittlung ist eine Kopie der letzten veröffentlichten Übermittlung.)
- Es wird ein ZIP-Archiv hochgeladen, das Symbole für die Übermittlung an Azure Blob Storage enthält.
- Als Nächstes wird die neue Übermittlung aktualisiert und anschließend an Partner Center gesendet.
- Schließlich wird der Status der neuen Übermittlung regelmäßig überprüft, bis die Übermittlung erfolgreich gesendet wurde.
public static void SubmitNewInAppProductSubmission(String accessToken, String inAppProductId,
String iapSubmissionRequestJson, String zipFilePath)
throws InterruptedException, IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
ResponseHandler<JsonObject> responseHandler = CreateJsonResponseHandler();
try {
// Get the in-app-product
HttpGet getInAppProductRequest = new HttpGet(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/" + inAppProductId);
getInAppProductRequest.addHeader("Authorization", "Bearer " + accessToken);
getInAppProductRequest.addHeader("User-Agent", "Java");
JsonObject getInAppProductResponse = httpclient.execute(getInAppProductRequest, responseHandler);
// Delete existing in-progress submission
JsonObject submissionToRemove = getInAppProductResponse.getJsonObject(
"pendingInAppProductSubmission");
if(submissionToRemove != null){
String submissionToRemoveId = submissionToRemove.getString("id");
HttpDelete deleteSubmissionRequest = new HttpDelete(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{0}/submissions/{1}",
inAppProductId, submissionToRemoveId));
deleteSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
deleteSubmissionRequest.addHeader("User-Agent", "Java");
httpclient.execute(deleteSubmissionRequest, responseHandler);
}
// Create submission
HttpPost createSubmissionRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{0}/submissions",
inAppProductId));
createSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
createSubmissionRequest.addHeader("User-Agent", "Java");
JsonObject createSubmissionResponse = httpclient.execute(createSubmissionRequest, responseHandler);
String submissionId = createSubmissionResponse.getString("id");
String fileUploadUrl = createSubmissionResponse.getString("fileUploadUrl");
// Update submission
HttpPut updateSubmissionRequest = new HttpPut(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{0}/submissions/{1}",
inAppProductId, submissionId));
updateSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
updateSubmissionRequest.addHeader("Content-type", "application/json");
updateSubmissionRequest.setEntity(new StringEntity(iapSubmissionRequestJson));
JsonObject updateSubmissionResponse = httpclient.execute(updateSubmissionRequest, responseHandler);
// Upload images and packages in a zip file
UploadZipFile(fileUploadUrl, zipFilePath);
// Commit submission
HttpPost commitSubmissionRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{0}/submissions/{1}/commit",
inAppProductId, submissionId));
commitSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
commitSubmissionRequest.addHeader("User-Agent", "Java");
JsonObject commitSubmissionResponse = httpclient.execute(commitSubmissionRequest, responseHandler);
System.out.println(commitSubmissionResponse.getString("status"));
// Pull submission status until commit process is completed
HttpGet getSubmissionStatusRequest = new HttpGet(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{0}/submissions/{1}/status",
inAppProductId, submissionId));
getSubmissionStatusRequest.addHeader("Authorization", "Bearer " + accessToken);
getSubmissionStatusRequest.addHeader("User-Agent", "Java");
JsonObject getSubmissionStatusResponse = httpclient.execute(getSubmissionStatusRequest,
responseHandler);
String submissionStatus = getSubmissionStatusResponse.getString("status");
while(submissionStatus.equals("CommitStarted")){
Thread.sleep(60*1000);
getSubmissionStatusResponse = httpclient.execute(getSubmissionStatusRequest, responseHandler);
submissionStatus = getSubmissionStatusResponse.getString("status");
}
System.out.println(submissionStatus);
} catch (HttpResponseException e){
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.close();
}
}
Erstellen einer Flight-Paket-Übermittlung
Das folgende Beispiel zeigt, wie Sie verschiedene Methoden in der Microsoft Store-Übermittlungs-API verwenden, um eine Flight-Paket-Übermittlung zu erstellen. Dazu erstellt die SubmitNewFlightSubmission
Methode eine neue Übermittlung als Klon der letzten veröffentlichten Übermittlung und aktualisiert und führt dann einen Commit für die geklonte Übermittlung an Partner Center durch. Insbesondere führt die Methode die SubmitNewFlightSubmission
folgenden Aufgaben aus:
- Zunächst ruft die Methode Daten für das angegebene Flight-Paket ab.
- Als Nächstes wird die ausstehende Übermittlung für das Flight-Paket gelöscht, wenn vorhanden.
- Anschließend wird eine neue Übermittlung für das Flight-Paket erstellt. (Die neue Übermittlung ist eine Kopie der letzten veröffentlichten Übermittlung.)
- Es wird ein neues Paket für die Übermittlung auf Azure Blob Storage hochgeladen.
- Als Nächstes wird die neue Übermittlung an PartnerCenter aktualisiert und anschließend übernommen.
- Schließlich wird der Status der neuen Übermittlung regelmäßig überprüft, bis die Übermittlung erfolgreich gesendet wurde.
public static void SubmitNewFlightSubmission(String accessToken, String applicationId,
String flightId, String flightSubmissionRequestJson, String zipFilePath)
throws InterruptedException, URISyntaxException, IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
ResponseHandler<JsonObject> responseHandler = CreateJsonResponseHandler();
try {
// Get flight
HttpGet getFlightRequest = new HttpGet(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}", applicationId,
flightId));
getFlightRequest.addHeader("Authorization", "Bearer " + accessToken);
getFlightRequest.addHeader("User-Agent", "Java");
JsonObject getFlightResponse = httpclient.execute(getFlightRequest, responseHandler);
// Delete existing in-progress submission
JsonObject submissionToRemove = getFlightResponse.getJsonObject("pendingFlightSubmission");
if(submissionToRemove != null){
String submissionToRemoveId = submissionToRemove.getString("id");
HttpDelete deleteSubmissionRequest = new HttpDelete(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}/submissions/{2}",
applicationId, flightId, submissionToRemoveId));
deleteSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
deleteSubmissionRequest.addHeader("User-Agent", "Java");
httpclient.execute(deleteSubmissionRequest, responseHandler);
}
// Create submission
HttpPost createSubmissionRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}/submissions",
applicationId, flightId));
createSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
createSubmissionRequest.addHeader("User-Agent", "Java");
JsonObject createSubmissionResponse = httpclient.execute(createSubmissionRequest, responseHandler);
String submissionId = createSubmissionResponse.getString("id");
String fileUploadUrl = createSubmissionResponse.getString("fileUploadUrl");
// Update submission
HttpPut updateSubmissionRequest = new HttpPut(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}/submissions/{2}",
applicationId, flightId, submissionId));
updateSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
updateSubmissionRequest.addHeader("Content-type", "application/json");
updateSubmissionRequest.addHeader("User-Agent", "Java");
updateSubmissionRequest.setEntity(new StringEntity(flightSubmissionRequestJson));
JsonObject updateSubmissionResponse = httpclient.execute(updateSubmissionRequest, responseHandler);
// Upload images and packages in a zip file
UploadZipFile(fileUploadUrl, zipFilePath);
// Commit submission
HttpPost commitSubmissionRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}/submissions/{2}/commit",
applicationId, flightId, submissionId));
commitSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
commitSubmissionRequest.addHeader("User-Agent", "Java");
JsonObject commitSubmissionResponse = httpclient.execute(commitSubmissionRequest, responseHandler);
System.out.println(commitSubmissionResponse.getString("status"));
// Pull submission status until commit process is completed
HttpGet getSubmissionStatusRequest = new HttpGet(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}/submissions/{2}",
applicationId, flightId, submissionId));
getSubmissionStatusRequest.addHeader("Authorization", "Bearer " + accessToken);
getSubmissionStatusRequest.addHeader("User-Agent", "Java");
JsonObject getSubmissionStatusResponse = httpclient.execute(getSubmissionStatusRequest,
responseHandler);
String submissionStatus = getSubmissionStatusResponse.getString("status");
while(submissionStatus.equals("CommitStarted")){
Thread.sleep(60*1000);
getSubmissionStatusResponse = httpclient.execute(getSubmissionStatusRequest, responseHandler);
submissionStatus = getSubmissionStatusResponse.getString("status");
}
System.out.println(submissionStatus);
} catch (HttpResponseException e){
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.close();
}
}
Hilfsmethoden zum Hochladen von Übermittlungsdateien und Behandeln von Anforderungsantworten
Die folgenden Hilfsmethoden veranschaulichen diese Aufgaben:
- So laden Sie ein ZIP-Archiv mit neuen Ressourcen für eine App- oder Add-On-Übermittlung in Azure Blob Storage hoch. Weitere Informationen zum Hochladen eines ZIP-Archivs in Azure Blob Storage für App- und Add-On-Übermittlungen finden Sie in den relevanten Anweisungen unter Erstellen einer App-Übermittlung, Erstellen einer Add-On-Übermittlung und Erstellen einer Flight-Paket-Übermittlung.
- Behandeln von Anforderungsantworten
private static void UploadZipFile(String fileUploadUrl, String zipFilePath) throws IOException{
CloseableHttpClient httpclient = HttpClients.createDefault();
File uploadFile = new File(zipFilePath);
// Encode '+', otherwise it will be decoded as ' '
HttpPut uploadFileRequest = new HttpPut(fileUploadUrl.replace("+", "%2B"));
uploadFileRequest.addHeader("x-ms-blob-type", "BlockBlob");
uploadFileRequest.setEntity(new FileEntity(uploadFile));
CloseableHttpResponse uploadFileResponse;
try {
uploadFileResponse = httpclient.execute(uploadFileRequest);
System.out.println(uploadFileResponse.getStatusLine());
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.close();
}
}
private static ResponseHandler<JsonObject> CreateJsonResponseHandler(){
ResponseHandler<JsonObject> responseHandler = new ResponseHandler<JsonObject>() {
@Override
public JsonObject handleResponse(HttpResponse response) throws IOException {
StatusLine statusLine = response.getStatusLine();
HttpEntity entity = response.getEntity();
JsonObject returnValue = null;
if(entity != null){
JsonReader reader = Json.createReader(entity.getContent());
returnValue = reader.readObject();
}
// Log response status and correlation ID
System.out.println(statusLine);
System.out.println(response.getFirstHeader("MS-CorrelationId"));
// Underlying failure reason is in response entity
if (statusLine.getStatusCode() >= 300) {
if(entity == null){
throw new HttpResponseException(
statusLine.getStatusCode(),
statusLine.getReasonPhrase());
}
else{
throw new HttpResponseException(
statusLine.getStatusCode(),
statusLine.getReasonPhrase() + " " + returnValue.toString() );
}
}
return returnValue;
}
};
return responseHandler;
}
Vollständige Codeliste
Die folgende Codeauflistung enthält alle vorherigen Beispiele, die in einer Quelldatei organisiert sind.
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.text.MessageFormat;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpResponseException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.*;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.entity.FileEntity;
import org.apache.http.entity.StringEntity;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonReader;
public class IngestionServiceJavaSamples {
public static void main(String[] args) throws InterruptedException, URISyntaxException, IOException {
// Generate access token. Access token is valid for 1 hour. Regenerate access token when needed
String tenantId = ""; //{Your tenant ID}
String clientId = ""; //{Your client ID}
String clientSecret = ""; //{Your client secret}
String accessToken = GenerateAccessToken(tenantId, clientId, clientSecret);
// Application submission sample
String applicationId = ""; //{Your application ID}
String appSubmissionRequestJson = ""; //{Your submission request JSON}
String appSubmissionZipFilePath = ""; //{Your zip file path}
SubmitNewApplicationSubmission(accessToken, applicationId, appSubmissionRequestJson,
appSubmissionZipFilePath);
// Flight samples
String flightId = ""; //{Your flight ID}
String flightRequestJson = ""; //{Your flight request JSON}
String flightSubmissionRequestJson = ""; //{Your submission request JSON}
String flightSubmissionZipFilePath = ""; //{Your zip file path}
CreateNewFlight(accessToken, applicationId, flightRequestJson);
SubmitNewFlightSubmission(accessToken, applicationId, flightId, flightSubmissionRequestJson,
flightSubmissionZipFilePath);
// In-app-product samples
String inAppProductId = ""; //{Your in-app-product ID}
String inAppProductRequestJson = ""; //{Your in-app-product request JSON}
String iapSubmissionRequestJson = ""; //{Your submission request JSON}
String iapSubmissionZipFilePath = ""; //{Your zip file path}
CreateNewInAppProduct(accessToken, inAppProductRequestJson);
SubmitNewInAppProductSubmission(accessToken, inAppProductId, iapSubmissionRequestJson,
iapSubmissionZipFilePath);
}
public static String GenerateAccessToken(String tenantId, String clientId, String clientSecret) {
// Generate access token. Access token is valid for 1 hour. Regenerate access token when needed
String tokenEndpoint = "https://login.microsoftonline.com/{0}/oauth2/token";
String tokenResource = "https://manage.devcenter.microsoft.com";
HttpPost tokenRequest = new HttpPost(MessageFormat.format(tokenEndpoint, tenantId));
String tokenRequestBody = MessageFormat.format(
"grant_type=client_credentials&client_id={0}&client_secret={1}&resource={2}",
clientId, clientSecret, tokenResource);
tokenRequest.setEntity(new StringEntity(tokenRequestBody, "utf-8"));
tokenRequest.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
CloseableHttpClient httpclient = HttpClients.createDefault();
ResponseHandler<String> responseHandler = new BasicResponseHandler();
try {
String tokenResponse = httpclient.execute(tokenRequest, responseHandler);
JsonReader reader = Json.createReader(new ByteArrayInputStream(tokenResponse.getBytes("UTF-8")));
String accessToken = reader.readObject().getString("access_token");
return accessToken;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static void SubmitNewApplicationSubmission(String accessToken, String applicationId,
String appSubmissionRequestJson, String zipFilePath)
throws InterruptedException, IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
ResponseHandler<JsonObject> responseHandler = CreateJsonResponseHandler();
try {
// Get application
HttpGet getApplicationRequest = new HttpGet(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/" + applicationId);
getApplicationRequest.addHeader("Authorization", "Bearer " + accessToken);
getApplicationRequest.addHeader("User-Agent", "Java");
JsonObject getApplicaiontResponse = httpclient.execute(getApplicationRequest, responseHandler);
// Delete existing in-progress submission
JsonObject submissionToRemove = getApplicaiontResponse.getJsonObject(
"pendingApplicationSubmission");
if(submissionToRemove != null){
String submissionToRemoveId = submissionToRemove.getString("id");
HttpDelete deleteSubmissionRequest = new HttpDelete(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/submissions/{1}",
applicationId, submissionToRemoveId));
deleteSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
deleteSubmissionRequest.addHeader("User-Agent", "Java");
httpclient.execute(deleteSubmissionRequest, responseHandler);
}
// Create submission
HttpPost createSubmissionRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/submissions",
applicationId));
createSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
createSubmissionRequest.addHeader("User-Agent", "Java");
JsonObject createSubmissionResponse = httpclient.execute(createSubmissionRequest, responseHandler);
String submissionId = createSubmissionResponse.getString("id");
String fileUploadUrl = createSubmissionResponse.getString("fileUploadUrl");
// Update submission
HttpPut updateSubmissionRequest = new HttpPut(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/submissions/{1}",
applicationId, submissionId));
updateSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
updateSubmissionRequest.addHeader("Content-type", "application/json");
updateSubmissionRequest.addHeader("User-Agent", "Java");
updateSubmissionRequest.setEntity(new StringEntity(appSubmissionRequestJson));
JsonObject updateSubmissionResponse = httpclient.execute(updateSubmissionRequest, responseHandler);
// Upload images and packages in a zip file
UploadZipFile(fileUploadUrl, zipFilePath);
// Commit submission
HttpPost commitSubmissionRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/submissions/{1}/commit",
applicationId, submissionId));
commitSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
commitSubmissionRequest.addHeader("User-Agent", "Java");
JsonObject commitSubmissionResponse = httpclient.execute(commitSubmissionRequest, responseHandler);
System.out.println(commitSubmissionResponse.getString("status"));
// Pull submission status until commit process is completed
HttpGet getSubmissionStatusRequest = new HttpGet(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/submissions/{1}",
applicationId, submissionId));
getSubmissionStatusRequest.addHeader("Authorization", "Bearer " + accessToken);
getSubmissionStatusRequest.addHeader("User-Agent", "Java");
JsonObject getSubmissionStatusResponse = httpclient.execute(getSubmissionStatusRequest,
responseHandler);
String submissionStatus = getSubmissionStatusResponse.getString("status");
while(submissionStatus.equals("CommitStarted")){
Thread.sleep(60*1000);
getSubmissionStatusResponse = httpclient.execute(getSubmissionStatusRequest, responseHandler);
submissionStatus = getSubmissionStatusResponse.getString("status");
}
System.out.println(submissionStatus);
} catch (HttpResponseException e){
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.close();
}
}
public static void CreateNewFlight(String accessToken, String applicationId, String flightRequestJson)
throws InterruptedException, IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
ResponseHandler<JsonObject> responseHandler = CreateJsonResponseHandler();
try {
// Create a new flight, a flight submission will be created together with the flight
HttpPost createFlightRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights", applicationId));
createFlightRequest.addHeader("Authorization", "Bearer " + accessToken);
createFlightRequest.addHeader("Content-type", "application/json");
createFlightRequest.setEntity(new StringEntity(flightRequestJson));
JsonObject createFlightResponse = httpclient.execute(createFlightRequest, responseHandler);
System.out.println(createFlightResponse.toString());
String flightId = createFlightResponse.getString("flightId");
String submissionId = createFlightResponse.getJsonObject("pendingFlightSubmission").getString("id");
// Delete created flight
HttpDelete deleteFlightRequest = new HttpDelete(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}",
applicationId, flightId));
deleteFlightRequest.addHeader("Authorization", "Bearer " + accessToken);
httpclient.execute(deleteFlightRequest, responseHandler);
} catch (HttpResponseException e){
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.close();
}
}
public static void SubmitNewFlightSubmission(String accessToken, String applicationId,
String flightId, String flightSubmissionRequestJson, String zipFilePath)
throws InterruptedException, URISyntaxException, IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
ResponseHandler<JsonObject> responseHandler = CreateJsonResponseHandler();
try {
// Get flight
HttpGet getFlightRequest = new HttpGet(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}", applicationId,
flightId));
getFlightRequest.addHeader("Authorization", "Bearer " + accessToken);
getFlightRequest.addHeader("User-Agent", "Java");
JsonObject getFlightResponse = httpclient.execute(getFlightRequest, responseHandler);
// Delete existing in-progress submission
JsonObject submissionToRemove = getFlightResponse.getJsonObject("pendingFlightSubmission");
if(submissionToRemove != null){
String submissionToRemoveId = submissionToRemove.getString("id");
HttpDelete deleteSubmissionRequest = new HttpDelete(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}/submissions/{2}",
applicationId, flightId, submissionToRemoveId));
deleteSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
deleteSubmissionRequest.addHeader("User-Agent", "Java");
httpclient.execute(deleteSubmissionRequest, responseHandler);
}
// Create submission
HttpPost createSubmissionRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}/submissions",
applicationId, flightId));
createSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
createSubmissionRequest.addHeader("User-Agent", "Java");
JsonObject createSubmissionResponse = httpclient.execute(createSubmissionRequest, responseHandler);
String submissionId = createSubmissionResponse.getString("id");
String fileUploadUrl = createSubmissionResponse.getString("fileUploadUrl");
// Update submission
HttpPut updateSubmissionRequest = new HttpPut(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}/submissions/{2}",
applicationId, flightId, submissionId));
updateSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
updateSubmissionRequest.addHeader("Content-type", "application/json");
updateSubmissionRequest.addHeader("User-Agent", "Java");
updateSubmissionRequest.setEntity(new StringEntity(flightSubmissionRequestJson));
JsonObject updateSubmissionResponse = httpclient.execute(updateSubmissionRequest, responseHandler);
// Upload images and packages in a zip file
UploadZipFile(fileUploadUrl, zipFilePath);
// Commit submission
HttpPost commitSubmissionRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}/submissions/{2}/commit",
applicationId, flightId, submissionId));
commitSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
commitSubmissionRequest.addHeader("User-Agent", "Java");
JsonObject commitSubmissionResponse = httpclient.execute(commitSubmissionRequest, responseHandler);
System.out.println(commitSubmissionResponse.getString("status"));
// Pull submission status until commit process is completed
HttpGet getSubmissionStatusRequest = new HttpGet(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/applications/{0}/flights/{1}/submissions/{2}",
applicationId, flightId, submissionId));
getSubmissionStatusRequest.addHeader("Authorization", "Bearer " + accessToken);
getSubmissionStatusRequest.addHeader("User-Agent", "Java");
JsonObject getSubmissionStatusResponse = httpclient.execute(getSubmissionStatusRequest,
responseHandler);
String submissionStatus = getSubmissionStatusResponse.getString("status");
while(submissionStatus.equals("CommitStarted")){
Thread.sleep(60*1000);
getSubmissionStatusResponse = httpclient.execute(getSubmissionStatusRequest, responseHandler);
submissionStatus = getSubmissionStatusResponse.getString("status");
}
System.out.println(submissionStatus);
} catch (HttpResponseException e){
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.close();
}
}
public static void CreateNewInAppProduct(String accessToken, String inAppProductRequestJson)
throws InterruptedException, IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
ResponseHandler<JsonObject> responseHandler = CreateJsonResponseHandler();
try {
// Create a new in-app-product
HttpPost createInAppProductRequest = new HttpPost(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts");
createInAppProductRequest.addHeader("Authorization", "Bearer " + accessToken);
createInAppProductRequest.addHeader("Content-type", "application/json");
createInAppProductRequest.addHeader("User-Agent", "Java");
createInAppProductRequest.setEntity(new StringEntity(inAppProductRequestJson));
JsonObject createInAppProductResponse = httpclient.execute(createInAppProductRequest,
responseHandler);
String inAppProductId = createInAppProductResponse.getString("id");
System.out.println(createInAppProductResponse.toString());
// Delete created in-app-product
HttpDelete deleteInAppProductRequest = new HttpDelete(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/" + inAppProductId);
deleteInAppProductRequest.addHeader("Authorization", "Bearer " + accessToken);
deleteInAppProductRequest.addHeader("User-Agent", "Java");
httpclient.execute(deleteInAppProductRequest, responseHandler);
} catch (HttpResponseException e){
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.close();
}
}
public static void SubmitNewInAppProductSubmission(String accessToken, String inAppProductId,
String iapSubmissionRequestJson, String zipFilePath)
throws InterruptedException, IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
ResponseHandler<JsonObject> responseHandler = CreateJsonResponseHandler();
try {
// Get the in-app-product
HttpGet getInAppProductRequest = new HttpGet(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/" + inAppProductId);
getInAppProductRequest.addHeader("Authorization", "Bearer " + accessToken);
getInAppProductRequest.addHeader("User-Agent", "Java");
JsonObject getInAppProductResponse = httpclient.execute(getInAppProductRequest, responseHandler);
// Delete existing in-progress submission
JsonObject submissionToRemove = getInAppProductResponse.getJsonObject(
"pendingInAppProductSubmission");
if(submissionToRemove != null){
String submissionToRemoveId = submissionToRemove.getString("id");
HttpDelete deleteSubmissionRequest = new HttpDelete(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{0}/submissions/{1}",
inAppProductId, submissionToRemoveId));
deleteSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
deleteSubmissionRequest.addHeader("User-Agent", "Java");
httpclient.execute(deleteSubmissionRequest, responseHandler);
}
// Create submission
HttpPost createSubmissionRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{0}/submissions",
inAppProductId));
createSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
createSubmissionRequest.addHeader("User-Agent", "Java");
JsonObject createSubmissionResponse = httpclient.execute(createSubmissionRequest, responseHandler);
String submissionId = createSubmissionResponse.getString("id");
String fileUploadUrl = createSubmissionResponse.getString("fileUploadUrl");
// Update submission
HttpPut updateSubmissionRequest = new HttpPut(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{0}/submissions/{1}",
inAppProductId, submissionId));
updateSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
updateSubmissionRequest.addHeader("Content-type", "application/json");
updateSubmissionRequest.setEntity(new StringEntity(iapSubmissionRequestJson));
JsonObject updateSubmissionResponse = httpclient.execute(updateSubmissionRequest, responseHandler);
// Upload images and packages in a zip file
UploadZipFile(fileUploadUrl, zipFilePath);
// Commit submission
HttpPost commitSubmissionRequest = new HttpPost(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{0}/submissions/{1}/commit",
inAppProductId, submissionId));
commitSubmissionRequest.addHeader("Authorization", "Bearer " + accessToken);
commitSubmissionRequest.addHeader("User-Agent", "Java");
JsonObject commitSubmissionResponse = httpclient.execute(commitSubmissionRequest, responseHandler);
System.out.println(commitSubmissionResponse.getString("status"));
// Pull submission status until commit process is completed
HttpGet getSubmissionStatusRequest = new HttpGet(MessageFormat.format(
"https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{0}/submissions/{1}/status",
inAppProductId, submissionId));
getSubmissionStatusRequest.addHeader("Authorization", "Bearer " + accessToken);
getSubmissionStatusRequest.addHeader("User-Agent", "Java");
JsonObject getSubmissionStatusResponse = httpclient.execute(getSubmissionStatusRequest,
responseHandler);
String submissionStatus = getSubmissionStatusResponse.getString("status");
while(submissionStatus.equals("CommitStarted")){
Thread.sleep(60*1000);
getSubmissionStatusResponse = httpclient.execute(getSubmissionStatusRequest, responseHandler);
submissionStatus = getSubmissionStatusResponse.getString("status");
}
System.out.println(submissionStatus);
} catch (HttpResponseException e){
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.close();
}
}
private static void UploadZipFile(String fileUploadUrl, String zipFilePath) throws IOException{
CloseableHttpClient httpclient = HttpClients.createDefault();
File uploadFile = new File(zipFilePath);
// Encode '+', otherwise it will be decoded as ' '
HttpPut uploadFileRequest = new HttpPut(fileUploadUrl.replace("+", "%2B"));
uploadFileRequest.addHeader("x-ms-blob-type", "BlockBlob");
uploadFileRequest.setEntity(new FileEntity(uploadFile));
CloseableHttpResponse uploadFileResponse;
try {
uploadFileResponse = httpclient.execute(uploadFileRequest);
System.out.println(uploadFileResponse.getStatusLine());
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.close();
}
}
private static ResponseHandler<JsonObject> CreateJsonResponseHandler(){
ResponseHandler<JsonObject> responseHandler = new ResponseHandler<JsonObject>() {
@Override
public JsonObject handleResponse(HttpResponse response) throws IOException {
StatusLine statusLine = response.getStatusLine();
HttpEntity entity = response.getEntity();
JsonObject returnValue = null;
if(entity != null){
JsonReader reader = Json.createReader(entity.getContent());
returnValue = reader.readObject();
}
// Log response status and correlation ID
System.out.println(statusLine);
System.out.println(response.getFirstHeader("MS-CorrelationId"));
// Underlying failure reason is in response entity
if (statusLine.getStatusCode() >= 300) {
if(entity == null){
throw new HttpResponseException(
statusLine.getStatusCode(),
statusLine.getReasonPhrase());
}
else{
throw new HttpResponseException(
statusLine.getStatusCode(),
statusLine.getReasonPhrase() + " " + returnValue.toString() );
}
}
return returnValue;
}
};
return responseHandler;
}
}