curl で PUT に手こずった話 Port number ended with '?'


はじめに

GET処理はできていた

 .ターミナルコマンド(GET)
curl http://<アドレス>?<項目1>=1
[{"項目1":"1","項目2":"2"}]

本題

そもそもGET以外だと.NET側にもおまじないが必要になる

Web.configにWebDAV追加

ASP.NET
 <system.webServer>
    <modules>
      <remove name="WebDAVModule" />
    </modules>
    <handlers>
      <remove name="WebDAV" />
    </handlers>
  </system.webServer>
 .ターミナルコマンド(PUT)
curl -X PUT http://<アドレス> -H 'Content-Type:application/json' -d '{"Error":true,"errorCd":"a"}' 

データやコンテントタイプは'(シングルコーテーション)で囲む
空白は許されない

詰まったところ

 .間違い探し
curl -X PUT http://<アドレス> -H 'Content-Type:application/json' -d '{"Error":true,"errorCd":"a"}' 
curl -X PUT http://<アドレス> -H 'Content-Type:application/json' -d ’{"Error":true,"errorCd":"a"}’ 

皆さんはわかりますかね

メモ帳でコマンド内容を編集していたのですが、
デフォルトのメモ帳だと文字コードが違っていました

(')と(’)、(")と(”)

よくみると違っていたので

 .処理結果
curl: (3) Port number ended with '?'
curl: (3) Port number ended with '?'

このように表示されていました

今回のオチ

ネットでは「空白だ‼」とか「データは"ではなく'で囲まないといけない‼」
とかは出てくるのですが、まさか文字コードが違っているとは・・・

まあ、ちゃんとコマンドは確認しましょうねというお話でした