コミュニティ

LINE WORKSのテクニカルエキスパート及び開発者と
コードのサンプル、リソース、Tip等を共有し問題解決への相談が可能です。

??dev_메인_타이틀_모바일_ja_JP??

Home

cURLでの「投稿を作成」APIの呼び出しに失敗します

hikarusasaki

2020.06.24既読 290

お世話になります。
「ホーム」の「投稿を作成」するAPIについてです。
アクセストークンの取得までは完了しており、トークンを使ってAPI呼び出しに挑戦しています。
cURLでAPIの呼び出しを行うのですが、どうしても成功せず、400 Bad Request; Invalid parameterが返ってきます。
エラーの詳細としては、
Required request part 'article' is not present.
ということで、エンドポイントにアクセスできてはいるけれども、ボディデータを渡すことに失敗しているような印象です。
いろんな記述方法を試しましたが、そのうちの一つが以下のcURLコマンドです。

-X POST

-H "Content-Type: multipart/form-data; charset=UTF-8"

-H "consumerKey: {consumerKey}"

-H "Authorization: Bearer {token}"

-F "article={JSON}"

JSON部分の記述は、

{

   "title":"[TC][OpenApi] testTitle",

   "body":"testBody",

   "registerUtcDate":null,

   "modifyUtcDate":null,

   "useComment":true,

   "boardNo":{{boardNo}},

   "domainId":"{{domainId}}",

   "memberName":null,

   "department":null,

   "attentionPeriodInDays":0,

   "sendCreatedNotify": false

}

と、お手本通りの型をテストしていて、実際にはBoardNoとdomainIdはプログラム内で実際の値に置換しています。

JSONのダブルクォーテーションのエスケープ処理なども試していますが、結果は変わりませんでした。


(cURLで記述したいのは以下の部分です。)

Content-Type: multipart/form-data; boundary=WebAppBoundary


--WebAppBoundary
Content-Disposition: form-data; name="article"

{
   "title":"[TC][OpenApi] testTitle",
   "body":"testBody",
   "registerUtcDate":null,
   "modifyUtcDate":null,
   "useComment":true,
   "boardNo":{{boardNo}},
   "domainId":"{{domainId}}",
   "accountId":"{{accountId}}",
   "memberName":null,
   "department":null,
   "attentionPeriodInDays":0
}
お知恵をお借りできれば幸いです。

コメント4

  • LINE WORKS 公式アカウント

    ご認識の通り、400 Bad Request; Invalid parameter が表示されているのであれば article の記述をご確認いただければと思います。
    また、最小限の必須情報で投稿を試してみてください。
    -F 'article={ "domainId":xxxxxxxx,"boardNo":xxxxxxxxxxxxxxx, "title":"testTitle", "body":"testBody"}'

    2020.06.25

    0
  • hikarusasaki 投稿者

    ありがとうございます。ドメインIDの型がINTEGERなのにサンプルでは文字列型として記載されているのが気になっていました。これを正しく数値型にしてみることも必要ですね。cURLの記述の問題とばかり思い込んでいて気が回らなかったです。

    明日、ご指摘のように最低限のデータで試してみたいと思います。また結果をご報告いたします。

    2020.06.26

    0
  • hikarusasaki 投稿者

    うーん…。
    下記のcURLコマンドで試していますが、同様の400エラーです。

    -X POST
    -H "Content-Type: multipart/form-data; charset=UTF-8"
    -H "consumerKey: {consumerKey}"
    -H "Authorization: Bearer {accessToken}"
    -F "article={   \"title\":\"testTitle\",   \"body\":\"testBody\",   \"boardNo\":xxxxxxxxxxx,   \"domainId\":xxxxxxxxx }"

    ここでももちろん、ダブルクォーテーションエスケープをしないままやってみたり、JSONの改行を削除しないでやってみたり、-Fオプションの記述を変えてみたりなど、いろいろ試しています。

    ちなみに、エラーのメッセージは下記の通りです。

    {
    "error":"Bad Request",
     "message":"Invalid parameter",
     "devMessage":"Required request part 'article' is not present",
     "status":400,
     "domain":"home",
     "code":"SERVICE_UNAVAILABLE"
    }

    2020.06.26

    0
  • hikarusasaki 投稿者

    ご報告です!  cURLの、-H "Content-Type: multipart/form-data; charset=UTF-8"を削除したところ、うまく動作しました! ありがとうございました!

    2020.06.27

    0
前の投稿 ファイルの移動
次の投稿外部ユーザにBOTを利用できるようにするためには?