SAP HANAにoData via olingo(V2) with ベーシック認証でアクセス(POST)
以下はエントリー読むだけだったんで、今度はPOSTでデータ作成。
SAP HANAにoData via olingo(V2) with ベーシック認証でアクセス - ngtokuの日記
以下にあるサンプルコードだとHTTPステータスコードがBad Requestだったんで、試しにデータ本体だけ突っ込んだらレコード作成できました。
my-car-service/OlingoSampleApp.java at master · qinhaizong/my-car-service · GitHub
夜も遅いので中途半端だけど変更メソッドだけログ的に記載。
private ODataEntry writeEntity(Edm edm, String absolutUri, String entitySetName, Map<String, Object> data, String contentType, String httpMethod) throws EdmException, MalformedURLException, IOException, EntityProviderException, URISyntaxException { HttpURLConnection connection = initializeConnection(absolutUri, contentType, httpMethod); OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); // 本当はここをパラメータdataからJsonに変更する。MapでなくてJacksonを使ってBeanから変換したほうがいいかなって out.write("{\"ID\":\"GV006\",\"NAME\":\"'NEW DATA TOKU NG2'\",\"GROUP\":\"'POST DATA'\",\"CREATE_DATE\":\"\\/Date(1587911931893)\\/\"}"); out.close(); connection.connect(); final int status = connection.getResponseCode(); print("response code=" + status); ODataEntry entry = null; EdmEntityContainer entityContainer = edm.getDefaultEntityContainer(); EdmEntitySet entitySet = entityContainer.getEntitySet(entitySetName); if (status == 201) { InputStream content = connection.getInputStream(); content = logRawContent(httpMethod + " request on uri '" + absolutUri + "' with content:\n ", content, "\n"); entry = EntityProvider.readEntry(contentType, entitySet, content, EntityProviderReadProperties.init().build()); } connection.disconnect(); return entry; }
うぇーい。