2014-11-25 3 views
1
>Cell newCell = new Cell(); 
>newCell.setValue("no way"); 
>newCell.setColumnId(4303755236665220l); 
>  
> connection = (HttpURLConnection) new >URL("https://api.smartsheet.com/1.1/row/{row_id}/cells").openConnection(); 
>connection.setRequestMethod("PUT"); 
>connection.addRequestProperty("Authorization", "Bearer " + accessToken); 
>connection.addRequestProperty("Content-Type", "application/json"); 
>connection.setDoOutput(true); 
>   
>    
>mapper.writeValue(connection.getOutputStream(), newCell); 
>mapper.readValue(connection.getInputStream(), new TypeReference<Result<Cell>>() {}); 
>    
>System.out.println("cell added."); 

Это мой код Java для добавления ячейки в указанную строку.Обновление ячеек в smartsheet (java)

возвращает ошибку: -..

«Невозможно разобрать запрос Произошла следующая ошибка: Тело запроса должно быть либо объект JSON или JSON массив java.io.IOException: Сервер вернул код ответа HTTP: 400 для URL: https://api.smartsheet.com/1.1/row/row_id/cells "

row_id имеет длинное значение.

Может ли кто-нибудь помочь?

ответ

2

Похоже, вы используете конечную точку Update Row Cells для добавления значений в свои ячейки. При использовании этой конечной точки API-интерфейс Smartsheet ожидает, что тело запроса будет представлять собой массив ячеек, а не только один объект ячейки.

В вашем случае, ваше тело запроса выглядит следующим образом:

{"columnId": 4303755236665220l, "value": "no way"} 

Если вы хотите, чтобы обернуть этот объект в массиве, как это:

[{"columnId": 4303755236665220l, "value": "no way"} ] 

Вы также можете использовать Smartsheet Java SDK. Использование SDK вам нужно будет только сделать следующие вызовы

List<Cell> cells = new Cell.UpdateRowCellsBuilder().addCell(4303755236665220l, "no way").build(); 
smartsheet.rows().updateCells({row_Id}, cells); 

Как примечание стороны, эта конечная точка была недавно устаревшее, и мы Enourage вам использовать Modify Row конечную точку: PUT /sheet/{sheetId}/row/{rowId}

Для этой конечной точке вашего тело запроса будет только слегка изменяться, так как ваш массив ячеек будет обернут в объект строки, например:

{"cells":[{"columnId": 4303755236665220l, "value": "no way"}]} 
+0

Большое спасибо. Это сработало!! – user3407635