2017-10-20 329 views
2

有人可以帮我从下面的CURL请求创建经典的asp代码吗?在经典的ASP CURL请求

curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/beshared-repos/" 

我试过下面的示例代码,但它没有工作。

Dim http: Set http = Server.CreateObject("WinHttp.WinHttpRequest.5.1") 
Dim url: url = "https://cloud.seafile.com/api2/beshared-repos/" 

Dim data: data = "token=f2210dacd9c6ccb8133606d94ff8e61d99b477fd" 

With http 
    Call .Open("GET", url, False) 
    Call .SetRequestHeader("Content-Type", "application/x-www-form-urlencoded") 
    Call .SetRequestHeader("Authorization", "Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd") 
    Call .Send() 
End With 

If Left(http.Status, 1) = 2 Then 
    'Request succeeded with a HTTP 2xx response, do something... 
Else 
    'Output error 
    Call Response.Write("Server returned: " & http.Status & " " & http.StatusText) 
End If 

而且它抛出在行Call.Send()

WinHttp.WinHttpRequest error '80090326'

The message received was unexpected or badly formatted.

+0

[Documentation](https://manual.seafile.com/develop/web_api.html#shared-libraries)供参考。 – Lankymart

+0

[看起来像我的代码](https://stackoverflow.com/a/37462944/692942)。它绝对有效,所以如果你得到一个错误,可能是因为你没有传递正确的“Content-Type”或缺少一些要求。 – Lankymart

回答

1

问题下面的错误消息不是代码,我刚刚与7.56.0版本,这里测试curl通话是结果;

首先我试着在你的问题中的命令,失败了;

>curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/beshared-repos/" 

curl: (6) Could not resolve host: Token 
curl: (6) Could not resolve host: f2210dacd9c6ccb8133606d94ff8e61d99b477fd' 
curl: (35) schannel: SNI or certificate check failed: SEC_E_WRONG_PRINCIPAL (0x80090322) - The target principal name is incorrect. 

我猜想它不喜欢用于HTTP授权标题的单引号,所以替换它们并得到这个;

>curl -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" "https://cloud.seafile.com/api2/beshared-repos/" 

curl: (35) schannel: SNI or certificate check failed: SEC_E_WRONG_PRINCIPAL (0x80090322) - The target principal name is incorrect. 

这里的问题是错误:

schannel: SNI or certificate check failed: SEC_E_WRONG_PRINCIPAL (0x80090322) - The target principal name is incorrect.

不管你用什么方法来调用API,它会发生。

检查在浏览器的地址

https://cloud.seafile.com/api2/beshared-repos/ 

导致警告,该网站未在谷歌浏览器保护和利用SSL checker它出现的名称不匹配上的SSL证书。

None of the common names in the certificate match the name that was entered (cloud.seafile.com). You may receive an error when accessing this site in a web browser. Learn more about name mismatch errors .

+0

谢谢@Lankymart的反馈,问题是SSL证书! – RAJ