Foxtable(狐表)用户栏目专家坐堂 → 调用其他api接口的时候遇到 ContentLength ,看了一下教程HttpClient没有地方可以设置这个参数


  共有4349人关注过本帖树形打印复制链接

主题:调用其他api接口的时候遇到 ContentLength ,看了一下教程HttpClient没有地方可以设置这个参数

帅哥哟,离线,有人找我吗?
as2565929355
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:81 积分:1093 威望:0 精华:0 注册:2017/1/3 9:45:00
调用其他api接口的时候遇到 ContentLength ,看了一下教程HttpClient没有地方可以设置这个参数  发帖心情 Post By:2023/3/7 9:48:00 [只看该作者]

错误的事件名称
System.Net.ProtocolViolationException: 必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetResponse。
在 System.Net.HttpWebRequest.GetResponse()
在 Foxtable.HttpClient.GetData(Boolean SkipErr)

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110558 积分:562680 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/7 9:50:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
as2565929355
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:81 积分:1093 威望:0 精华:0 注册:2017/1/3 9:45:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:81 积分:1093 威望:0 精华:0 注册:2017/1/3 9:45:00
  发帖心情 Post By: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。

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110558 积分:562680 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/7 11:16:00 [只看该作者]

接口文档发过来看看

 回到顶部
帅哥哟,离线,有人找我吗?
lgzhao
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:304 积分:2091 威望:0 精华:0 注册:2017/11/19 9:46:00
  发帖心情 Post By: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()

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110558 积分:562680 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/24 8:34:00 [只看该作者]

上面不是设置了【request.ContentLength = byteArray.Length】吗?如果不行,说明不是这个导致的原因。具体请把接口文档发上来看看

 回到顶部
帅哥哟,离线,有人找我吗?
lgzhao
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:304 积分:2091 威望:0 精华:0 注册:2017/11/19 9:46:00
  发帖心情 Post By:2023/4/24 9:16:00 [只看该作者]

这个是我自己用得替代方法。我的意思是Foxtable自带的httpclient没有这个参数,导致有些接口无法用这个类了。

 回到顶部