HTTP-клиент Microsoft Graph API Java не разрешает обновление по патчу - PullRequest
0 голосов
/ 20 сентября 2019

Есть ли альтернативный способ обновления списка элементов без использования метода PATCH или базовых SDK (поскольку я делаю это через HTTP-клиент).

public Boolean updateItem(Item i) {
        if(i.getId() != null) {
            String URL = "https://graph.microsoft.com/v1.0/sites/"+siteId+"/lists/"+listId+"/items/"+i.getId()+"";

            try {
                URL url = new URL(URL);
                HttpURLConnection http = (HttpURLConnection) url.openConnection();
                http.setRequestMethod("PATCH");
                http.addRequestProperty("Accept", "application/json;odata.metadata=none");
                http.addRequestProperty("Content-Type", "application/json");
                http.setRequestProperty("Authorization", "Bearer "+getAuth());
                http.setDoOutput(true);
                http.setDoInput(true);

                send(http.getOutputStream(), i.toJson());

                http.connect();
                if(http.getResponseCode() == 200) {
                    String content = read(http.getInputStream());
                    System.out.println(content);
                    return true;

                }else {
                    String errorContent = read(http.getErrorStream());
                    System.out.println("UPDATE ITEM ERROR:"+errorContent);
                }
            }catch(IOException e) {
                System.out.println("UPDATE ITEM (IOException):"+e.getMessage());
            }
        }
        return false;
    }

getAuth () возвращает действительный доступтокен.

Я попытался это сделать:

http.setRequestProperty("X-HTTP-Method-Override", "PATCH");

Однако Microsoft, похоже, распознает его только как POST

1 Ответ

0 голосов
/ 23 сентября 2019

решаемая.Я использовал Apache HTTP Client, чтобы сделать метод исправления (org.apache.http.client.methods. *).

...