Bung ie Api. Помощь становится JsonNull? - PullRequest
0 голосов
/ 06 мая 2020

В настоящее время я работаю над финальным проектом для класса comp-sci более низкого уровня, и мы работаем с API Bung ie и пытаемся получить bnetMembershipId. Однако, когда мы пытаемся получить доступ к данным, мы продолжаем получать нулевые ошибки. Мы не знаем, как еще получить эти данные, и не знаем, почему они возвращаются как null.

Я получаю ссылку:

http://www.bungie.net/Platform/Destiny2/2/Profile/4611686018429022888/LinkedProfiles/

Нам нужен bnetMembershipId, который он возвращает.
Вот код, который мы используем для извлечения данных:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonNull;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;

public class GetBungieAccount  {
    private static String apiKey = "";

   public static String getBungieAccount(String membershipId, String membershipType) throws Exception{
        String url = "http://www.bungie.net/Platform/Destiny2/"+ membershipType+ "/Profile/" +membershipId+ "/LinkedProfiles/";
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod("GET");
        // Set header
        con.setRequestProperty("X-API-KEY", apiKey);

        //int responseCode = con.getResponseCode();
        // System.out.println("\nSending 'GET' request to Bungie.Net : " + url);
        //System.out.println("Response Code : " + responseCode);

        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        String response = "";

        while ((inputLine = in.readLine()) != null) {
            response += inputLine;
        }

        in.close();

        /* GsonBuilder builder = new GsonBuilder(); 
        builder.setPrettyPrinting(); 
        Gson gson = builder.create();

        JsonObject ResponseObj = gson.fromJson(response, JsonObject.class);

        JsonElement finalObj =  new JsonObject();
        for(JsonElement value : ResponseObj.getAsJsonArray("Response")){

            finalObj = value;                
        }
        System.out.println(finalObj.toString()); //TEST TO ENSURE THAT FINAL OBJECT GRABS DATA
        JsonObject finalfinalobject = gson.fromJson(finalObj.toString(), JsonObject.class);
        */

        @SuppressWarnings("deprecation")
        JsonParser parser = new JsonParser();
        @SuppressWarnings("deprecation")
        JsonObject json = (JsonObject) parser.parse(response);

        return json.getAsJsonObject("Response").get("membershipId").toString();


    }
}

извините, если это сделано плохо с первого раза StackOverflow

1 Ответ

0 голосов
/ 06 мая 2020

membersId - это свойство bnetMembership, поэтому вы можете сделать что-то вроде

return json.getAsJsonObject("Response").getAsJsonObject("bnetMembership").get(membershipId").toString();

В ответе также есть массив профилей, каждый из которых также имеет свойство membersId, но я думаю, вы спросили С уважением к bnetMembership.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...