以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  调用其他api接口的时候遇到 ContentLength ,看了一下教程HttpClient没有地方可以设置这个参数  (http://www.foxtable.com/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没有这个参数,导致有些接口无法用这个类了。