為了測試RESTful API的功能,我在windows的cmd視窗用crul指令來測試,但是出現ORA-40441:JSON syntax error
指令:curl -i -H 'Content-type:application/json' -X POST -d '{"name":"愛因斯坦","job":"科學家"}' http://192.192.192.10/test
接著找了一台Linux的機器,用curl來測試上述的指令,結果是成功的。
所以問題只出現在windows底下,經查詢一些論壇之後,依一些如下的方案測試:
1、因為cmd的限制,所以將單引號換成雙引號,並加上跳脫符號「\」
指令:curl -i -H "Content-type: application/json" -X POST -d "{\"name\":\"愛因斯坦\",\"job\":\"科學家\"}" http://192.192.192.10/test
結果是ORA-40441: JSON syntax error
2、將中文改為英文測試
curl -i -H "Content-type: application/json" -X POST -d "{\"name\":\"john\",\"job\":\"student\"}" http://192.192.192.10/test
結果成功了,因此解決了cmd的問題,再來就剩下中文字的問題。
3、因為windows預設是big5,所以post上去的資料會變成亂碼,導致錯誤,將json存成文字檔,如test.json,再執行下列指令讀取文字檔
curl -i -H "Content-type: application/json" -X POST -d @test.json http://192.192.192.10:8587/ords/ords_test/demo02/plsql01
這次就成功了。
總結,當在windows系統用cmd視窗做curl測試時,要注意兩件事:
1、一律只能用雙引號,並加上跳脫符號
2、中文字只能存以文字檔,再用curl讀取文字檔來上傳資料