GETが出来てPOSTが出来ません

お世話になっております。髙木と申します。

 

EXCELからkintoneに対して、新規登録・更新を実行しようとしておりますが、

下記のエラーが出てしまい、困っております。

 

『“{“code”:“CB_HM01”,“id”:“yAky0pTuvrIOB211MDWE”,“message”:“利用できないメソッドが指定されています。”}”』

 

対処法や原因を教えていただけますと助かります。

よろしくお願いいたします。

メッセージの通り、指定したリクエストリソース( /k/v1/record.json 等APIの種類を指す部分)で使えないリクエストメソッドを指定しているのだと思います。基本的なレコード操作であれば、GET、POST、PUT、DELETEに対して DELETE/record 以外は全ての組み合わせが存在しますので、基本出てこないメッセージだと思います。

この種のトラブルシュートはエラーメッセージだけからの推察は難しい事も多く、リクエストあっての(エラー)レスポンスですので、リクエスト内容(実際にリクエストしているコード・スニペット)をつけてもらうと解決が早いです。こちらの冒頭「自分で試したものの解決できなかったプログラムを示すなど回答者が回答しやすい質問にしましょう」とある通り、その方がコメントもつきやすく、またやり取りも少なくなると思います。

Ryu Yamashita様、早速のご回答と、ご指摘ありがとうございます。

下記に作成したプログラムコードを明記いたします。

 

Public Function test(ByVal url As String) As Object
    Dim objHttpReq As Object
    Dim strJson As String

    Dim body As String

    body = “{”“app”“:アプリID,”“record”“: [{”“文字列”“:{”“value”“:”“テスト”“}}]}”

    Set objHttpReq = CreateObject(“MSXML2.XMLHTTP”)
    objHttpReq.Open “POST”, url

    'With objHttpReq
       .SetRequestHeader “X-Cybozu-Authorization”, testEncode64(“ユーザー名:パスワード”)
       .SetRequestHeader “Host”, “サブドメイン” & “.cybozu.com” + “:ポート番号”
       .SetRequestHeader “If-Modified-Since”, “Thu, 01 Jun 1970 00:00:00 GMT”
    End With

    objHttpReq.Send (body)

    strJson = objHttpReq.ResponseText
End Function

 

testEncode64は文字列をBASE64にエンコードしているものです。

引数のurlにはリクエスト先のURLが入っております。

 

可能でしたら対処法や原因を教えていただけますと助かります。

よろしくお願いいたします。

まず2つ気づくことがあります。

  • POSTメソッドなのに、Content-Typeの指定がない(ドキュメントにあるようにapplication/jsonの指定が必要です)
  • POST/record のリクエストだとすると、ボディの record のフォーマットが正しくない(recordの中に配列はなく “{”“app”“:アプリID,”“record”“: {”“文字列”“:{”“value”“:”“テスト”“}}}” のようになるかと思います。「"」の扱いが正しく出来てるかは私も微妙です)

ただ、これらが原因で出ているメッセージではない気がします。Content-Typeが原因だとすると、現在は「Content-Typeが不正・・・」のようなメッセージが出ていたような気がします。そうしますと、やはりAPIの種類を決めているリクエストリソース、つまりURLが何だったのかが関係してきそうです。

 

また、REST APIのトラブルシュートでは、cURLコマンドやPOSTMAN等別のHTTPクライアントツールと比べながら進めると足りないものや誤りに気付きやすいです。言い換えますと、cURLで成功させてそれを自身が実現したい環境・言語で書き揃えていくようなイメージです。公式ドキュメントを見ながらシンプルなHTTPクライアントでまずはリクエストを成功させるのが先決ですが、こちらも同じ切り口で参考になるかと思いますので眺めてみると良いかもしれません。

Ryu Yamashita様、早期のご回答ありがとうございます。

 

資料の読み込みが足りず、凡ミスが多くて申し訳ありませんでした。

 

いただきました新たな切り口の提案と資料を参考に、半日程度かけまして外部からのPOST実行が実現いたしました。

ご指摘の通り、エラーの原因はURLにありました。

 

様々な面で勉強になり、視野が広がったように思います。

ご回答ありがとうございました!

実現に至れてなによりでした!

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。