2017-09-16 11 views
0

curlをscalaで使用してjson文字列をポストしようとしています。 Linuxボックスからではなく、エラー((「メッセージ」苦しみ実行された場合私のcurlコマンドが正常に動作します:「クエリ文字列を提供しなければならない。」、)常にスカラ座からCurlを使用してJson文字列をスカラーに渡しているときにエラーが発生しました

私の作業curlコマンドのlinuxに:。

curl http://laptpad1811:5000/graphql -H "Content-Type: application/json" 
    -X POST -d '{"query":"mutation 
    CreateFileReceivedEvent($createFileReceivedEventInput: 
    CreateFleReceivedEventInput!) { createFileReceivedEvent(input: 
    $createFileReceivedEventInput) { clientMutationId }}","variables": 
    {"createFileReceivedEventInput": 
    {"clientMutationId":"Test","fileReceivedEvent":{"file": 
    {"fileTrackingId":"83a86c44-66a5-4de0-9b7f- 
    c6995877279d","name":"textfile_2017-08-21T15:58:45Z","fileType": 
    {"code":"textfile"}},"eventTimestamp":"2017-08- 
    21T15:59:30Z"}}},"operationName":"CreateFileReceivedEvent"}' 

私のScalaのコード: STEP1:txtファイルへの全体のJSON文字列(ペイロード)をコピー

'{"query":"mutation CreateFileReceivedEvent($createFileReceivedEventInput: 
    CreateFleReceivedEventInput!) { createFileReceivedEvent(input: 
    $createFileReceivedEventInput) { clientMutationId }}","variables": 
    {"createFileReceivedEventInput": 
    {"clientMutationId":"Test","fileReceivedEvent":{"file": 
    {"fileTrackingId":"83a86c44-66a5-4de0-9b7f- 
    c6995877279d","name":"textfile_2017-08-21T15:58:45Z","fileType": 
    {"code":"textfile"}},"eventTimestamp":"2017-08- 
    21T15:59:30Z"}}},"operationName":"CreateFileReceivedEvent"}' 

STEP2:

val data=fromFile("/usr/test/data.txt").getLines.mkString 

STEP3:

val cmd = Seq("curl", "http://laptpad1811:5000/graphql", "-H", 
    "'Content-Type:application/json'" ,"-X", "POST", "-d" , data) 

STEP4:

cmd.!! 

私はいつも

String = 
"{ 
    "errors": [ 
    { 
     "message": "Must provide query string.", 
     "stack": "BadRequestError: Must provide query string.\n 
私は 'に」に変更しようとしてい

とJSON文字列のみとめ組み合わせ、以下のエラーが出ますが、私同じエラーが発生します。

答えて

0

sys.processがシェル(bashなど)を介してコマンドを渡さないことが問題であると思われますので、シェルで必要な引用符はScalaでは不要になります。 Unixスタイルのユーティリティの場合は、予期しない動作につながる可能性があります)。

ので、試してみてください。

val cmd = Seq("curl", "http://laptpad1811:5000/graphql", "-H", "Content-Type: application/json", "-X", "POST", "-d", data) 

は同様にあなたのテキストファイルから単一引用符の折り返しを削除します。

しかし私はScalaのカールを起こさないように勧め、既存のhttpクライアントライブラリ(私は個人的にはGigahorseが好きです)を使ってアドバイスします。

+0

これは機能しました。作業した引用符を削除します。ありがとうLevi !! –

関連する問題