我正在使用以下代码....
Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create(PostingUrl), HttpWebRequest)
myHttpWebRequest.Method = "POST"
myHttpWebRequest.Headers.Add("Authorization", "Bearer " & RSettings.access_token)
myHttpWebRequest.Headers.Add("Accept-Version", "2")
myHttpWebRequest.ContentType = "application/json; charset=UTF-8"
myHttpWebRequest.Accept = "application/json"
' myHttpWebRequest.Proxy = Nothing ' ** SEE NOTES ON THIS LINE **
Dim Byt As Byte() = Encoding.UTF8.GetBytes(DataString)
Using stream = myHttpWebRequest.GetRequestStream()
stream.Write(Byt, 0, Byt.Length)
End Using
Using myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)
Using srRead As New StreamReader(myHttpWebResponse.GetResponseStream())
ListingResponse = srRead.ReadToEnd()
End Using
End Using
其中:
PostingUrl
是“https://reverb.com/api/listings”RSettings.access_token
(显然)是此API的访问令牌DataString
是将数据发布到Reverb API的JSON字符串如果我从Visual Studio(localhost)运行我的代码,则返回
远程服务器返回错误:(406)Not Acceptable。
试图找出原因,我打开Fiddler希望我可以检查内容类型并找出问题,但响应错误更改为:
底层连接已关闭:无法为SSL / TLS安全通道建立信任关系。 ---> System.Security.Authentication.AuthenticationException:根据验证过程,远程证书无效。
(我猜这个错误,我的Auth键也有问题,但我认为这是一个单独的主题。)
在一些谷歌搜索和S / O页面后,我发现了两个建议:
myHttpWebRequest.Proxy = Nothing
如果我进行了任何这些更改,我会回到我的错误406 ,这是我没有运行Fiddler的。
但是,如果我添加了myHttpWebRequest.Proxy = Nothing
行添加,我再也看不到Fiddler中的Tunnel to http://reverb.com:443
日志条目了,没有对Reverb.com的请求记录,所以我无法检查任何内容。
我现在对我正在做的事感到非常困惑,我想其实并没有取得任何进展!
顺便说一下......所有这些都是尝试在Rever文档页面上重新创建cURL示例:
https://dev.reverb.com/docs/create-a-listing
我也一直在讨论这个问题:
https://dev.reverb.com/v1.0/discuss/57bb2ca0aa8f760e004588cf
答案 0 :(得分:0)
唉...好吧,我对Fiddler的困惑仍然存在,但 406 错误是由此引起的:
myHttpWebRequest.Headers.Add("Accept-Version", "2")
应该是
myHttpWebRequest.Headers.Add("Accept-Version", "2.0")
多么简单!!