使用cURL发布数据时出错

时间:2014-07-24 09:08:18

标签: json powershell post curl

我写了以下curl命令。

curl -v -X POST -H 'Accept: application/json' 
-H 'Content-Type: application/json' -u username:password 
-d 'Id=5&Email=add@ress.com&OptInType=0&EmailType=0&DataFields=null&Status=0}' 
https://api.dotmailer.com/v2/contacts

但是当我在Powershell中运行时,它会返回以下错误

  

“message”:“无法解析基于请求的正文   内容类型\“application / json \”   ERROR_BODY_DOES_NOT_MATCH_CONTENT_TYPE“}

这是详细的服务器响应

  
      
  • 在DNS缓存中找不到主机名
  •   
  • 尝试94.143.104.204 ...
  •   
  • 已连接至api.dotmailer.com(94.143.104.204)端口443(#0)
  •   
  • 成功设置证书验证位置:
  •   
  • CAfile:C:\ Program Files \ cURL \ bin \ curl-ca-bundle.crt CApath:none
  •   
  • SSLv3,TLS握手,客户端问候(1):
  •   
  • SSLv3,TLS握手,服务器问候(2):
  •   
  • SSLv3,TLS握手,CERT(11):
  •   
  • SSLv3,TLS握手,服务器完成(14):
  •   
  • SSLv3,TLS握手,客户端密钥交换(16):
  •   
  • SSLv3,TLS更改密码,客户端问候(1):
  •   
  • SSLv3,TLS握手,已完成(20):
  •   
  • SSLv3,TLS更改密码,客户端问候(1):
  •   
  • SSLv3,TLS握手,已完成(20):
  •   
  • 使用TLSv1.0 / AES128-SHA
  • 进行SSL连接   
  • 服务器证书:
  •   
  • 主题:C = GB; ST =英格兰; L =伦敦; OU = DDG; O = dotMailer Ltd; CN = *。dotmailer.com
  •   
  • 开始日期:2012-01-16 15:51:40 GMT
  •   
  • 到期日期:2015-01-16 15:51:40 GMT
  •   
  • subjectAltName:api.dotmailer.com matching
  •   
  • 发行人:C = BE; O = GlobalSign nv-sa; CN = GlobalSign组织验证CA-G2
  •   
  • SSL证书验证确定。
  •   
  • 使用Basic和用户'username'的服务器身份验证   * POST / v2 / contacts HTTP / 1.1   *授权:基本XXXpdXNlci0zNGFmNWU0NTdmYTJAYXBpY29ubmVjdG9yLmNvbTpzaW1vbmUxMjM =
  •   
  • User-Agent:curl / 7.37.0
  •   
  • 主持人:api.dotmailer.com
  •   
  • 接受:application / json
  •   
  • Content-Type:application / json
  •   
  • 内容长度:72
  •   
  • 上传已完全发送:72个字节中的72个
  •   
  • HTTP / 1.1 400错误请求
  •   
  • 缓存控制:无缓存
  •   
  • Pragma:no-cache
  •   
  • Content-Type:application / json;字符集= UTF-8
  •   
  • 到期:-1
  •   
  • 日期:星期四,2014年7月24日08:46:46 GMT
  •   
  • 内容长度:139
  •   
     

{“message”:“无法解析基于请求的正文   内容类型\“application / json \”   ERROR_BODY_DOES_NOT_MATCH_CONTENT_TYPE“}

     

连接#0主机api.dotmailer.com完好无损

有人能指出我正确的方向让我的命令正确吗? 感谢。

1 个答案:

答案 0 :(得分:1)

您在-d中的数据似乎不是json格式。尝试jsonlint验证json格式。或者,如果您尝试发布文本数据,请使用text / plain作为Content-type。