Dropbox API上的mIRC套接字HTTPS 400错误请求

时间:2016-05-07 06:41:32

标签: dropbox-api mirc

我想使用mIRC在Dropbot上创建一个文件夹

但是回声总是得到这样的信息:

400 Bad Request
The plain HTTP request was sent to HTTPS port

我不知道为什么会这样。 这是我的代码:

alias dropboxCreateFolder {
  sockclose dropboxCreateFolder
  sockopen dropboxCreateFolder api.dropboxapi.com 443
}

ON *:SOCKOPEN:dropboxCreateFolder: {
  if ($sockerr) { sockclose $sockname | halt }
  var %data = {"path":"/myfile/songs"}
  sockwrite -nt $sockname POST /2/files/create_folder HTTP/1.1
  sockwrite -nt $sockname Host: api.dropboxapi.com
  sockwrite -nt $sockname User-Agent: api-explorer-client
  sockwrite -nt $sockname Authorization: Bearer Access_Token
  sockwrite -nt $sockname Content-Type: application/json
  sockwrite -nt $sockname $crlf $+ %data
}

ON *:SOCKREAD:dropboxCreateFolder: {
  if ($sockerr) { sockclose $sockname | halt }
  else {
    var %sockreader | sockread %sockreader 
    echo -s %sockreader
  }
}

2 个答案:

答案 0 :(得分:0)

您显示的错误告诉您向HTTP端口发送纯HTTP请求。这意味着api.dropboxapi.com期望在端口443上建立SSL连接,但您尝试创建非SSL连接。

您需要在sockopen命令中指定-e switch来代替创建SSL连接。

答案 1 :(得分:0)

1-您没有使用SSL。这是一个Dropbox API要求。

2-你没有设置Content-Length标题,你应该在POST时真正做到这一点。

alias dropboxCreateFolder {
  sockclose dropboxCreateFolder
  sockopen -e dropboxCreateFolder api.dropboxapi.com 443
}

ON *:SOCKOPEN:dropboxCreateFolder: {
  if ($sockerr) { sockclose $sockname | halt }
  var %data = {"path":"/myfile/songs"}
  sockwrite -nt $sockname POST /2/files/create_folder HTTP/1.1
  sockwrite -nt $sockname Host: api.dropboxapi.com
  sockwrite -nt $sockname User-Agent: api-explorer-client
  sockwrite -nt $sockname Authorization: Bearer Access_Token
  sockwrite -nt $sockname Content-Type: application/json
  sockwrite -nt $sockname Content-Length: $len(%data)
  sockwrite -nt $sockname $crlf $+ %data
}

ON *:SOCKREAD:dropboxCreateFolder: {
  if ($sockerr) { sockclose $sockname | halt }
  else {
    var %sockreader | sockread %sockreader 
    echo -s %sockreader
  }
}