以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 调用其他api接口的时候遇到 ContentLength ,看了一下教程HttpClient没有地方可以设置这个参数 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=185636) |
-- 作者:as2565929355 -- 发布时间:2023/3/7 9:48:00 -- 调用其他api接口的时候遇到 ContentLength ,看了一下教程HttpClient没有地方可以设置这个参数 错误的事件名称 System.Net.ProtocolViolationException: 必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetResponse。 在 System.Net.HttpWebRequest.GetResponse() 在 Foxtable.HttpClient.GetData(Boolean SkipErr)
|
-- 作者:有点蓝 -- 发布时间:2023/3/7 9:50:00 -- http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=150626 |
-- 作者:as2565929355 -- 发布时间:2023/3/7 11:14:00 --
Dim hc As New HttpClient(url) hc.Headers.Add("Authorization", "Bearer" & "sk**********") Dim jo As New JObject jo("prompt") = "你好" jo("max_tokens") = 3072 jo("model") = "text-davinci-003" jo("temperature") = 0 hc.Content = jo.ToString Dim ret As String = hc.GetData() 这个是代码 遇到了问题,麻烦老师帮忙看看 System.Net.ProtocolViolationException: 必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetResponse。
|
-- 作者:as2565929355 -- 发布时间:2023/3/7 11:15:00 -- Dim hc As New HttpClient(url) hc.Headers.Add("Authorization", "Bearer" & "sk**********") Dim jo As New JObject jo("prompt") = "你好" jo("max_tokens") = 3072 jo("model") = "text-davinci-003" jo("temperature") = 0 hc.Content = jo.ToString Dim ret As String = hc.GetData() 这个是代码 遇到了问题,麻烦老师帮忙看看 System.Net.ProtocolViolationException: 必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetResponse。
|
-- 作者:有点蓝 -- 发布时间:2023/3/7 11:16:00 -- 接口文档发过来看看 |
-- 作者:lgzhao -- 发布时间:2023/4/24 4:59:00 -- 我也遇到同样问题导致接口无法使用。 Foxtable的httpclient类,底层的HttpWebRequest对象,发送的时候缺少ContentLength属性,对方接口不认。 这个问题最好解决一下或者升级.netframework版本到4.8,到时候我改用其他的类来发。 Dim request As System.Net.HttpWebRequest = CType(System.Net.WebRequest.Create(ExchangeURL ), System.Net.HttpWebRequest) request.Method = "POST" Dim postData As String = "grant_type=refresh_token&refresh_token=" & _XeroInfo.refresh_token Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData) request.C request.ContentLength = byteArray.Length request.Headers.Add("Authorization", "Basic " & base64EncodedText) Dim dataStream As System.IO.Stream = request.GetRequestStream() dataStream.Write(byteArray, 0, byteArray.Length) dataStream.Close() Dim response As System.Net.HttpWebResponse = CType(request.GetResponse(), System.Net.HttpWebResponse) Dim responseStream As System.IO.Stream = response.GetResponseStream() Dim reader As New System.IO.StreamReader(responseStream, Encoding.UTF8) Dim responseContent As String = reader.ReadToEnd() responseStream.Close() response.Close() |
-- 作者:有点蓝 -- 发布时间:2023/4/24 8:34:00 -- 上面不是设置了【request.ContentLength = byteArray.Length】吗?如果不行,说明不是这个导致的原因。具体请把接口文档发上来看看 |
-- 作者:lgzhao -- 发布时间:2023/4/24 9:16:00 -- 这个是我自己用得替代方法。我的意思是Foxtable自带的httpclient没有这个参数,导致有些接口无法用这个类了。 |