Foxtable(狐表)用户栏目专家坐堂 → HttpClient怎么捕获错误?


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

主题:HttpClient怎么捕获错误?

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


加好友 发短信
等级:二尾狐 帖子:586 积分:5685 威望:0 精华:0 注册:2014/5/21 10:30:00
HttpClient怎么捕获错误?  发帖心情 Post By:2020/7/23 15:38:00 [只看该作者]

如题,如下示例,假设服务端返回异常状态码,客户端怎么解析异常状态码,进行正确的响应了?用了try貌似不起作用
Dim hc As New HttpClient("http://127.0.0.1/gettime.htm")
Dim
 dt As Date = hc.GetData()
MessageBox
.Show(dt)

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/23 15:54:00 [只看该作者]

Dim hc As New HttpClient("http://127.0.0.1/gettime.htm")
Dim ret As String = hc.GetData(True)
If ret = "" Then
    Output.Show( hc.rCookies("Error"))
Else
    Output.Show( ret)
End If


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


加好友 发短信
等级:二尾狐 帖子:586 积分:5685 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2020/7/23 15:58:00 [只看该作者]

getData(True)是什么意思呢?看教程都是不带参数的,在哪里能看到详细用法?
另外如何获取错误后的状态码及描述,需要客户端根据状态码对应做出调整。
[此贴子已经被作者于2020/7/23 16:00:09编辑过]

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


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

getData(True)就是可以在结果返回异常信息,这个帮助没有的


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


加好友 发短信
等级:二尾狐 帖子:586 积分:5685 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2020/7/23 16:15:00 [只看该作者]

当200的时候可返回状态码及描述,401/400的时候返回0空信息,这个是设定上有问题么?

以下400时候返回信息,错误信息给解析到cookies里面了,理论上可以获取到状态码,但错误描述怎么办?
Accept:
UserAgent:
更新日期:00:00:00
状态码:0
状态描述:
内容类型:
内容长度:0
------Headers-------------
------cookies-------------
Error:远程服务器返回错误: (400) 错误的请求。
[此贴子已经被作者于2020/7/23 16:19:03编辑过]

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


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

直接取cookies里面的内容

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


加好友 发短信
等级:二尾狐 帖子:586 积分:5685 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2020/7/23 16:37:00 [只看该作者]

请问cookie里面只能取到状态码,无法取到自定义状态描述的是么?

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


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

具体怎么做的?做个例子发上来看看

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


加好友 发短信
等级:二尾狐 帖子:586 积分:5685 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2020/7/23 16:51:00 [只看该作者]

代码如下,后端是临时测试的,错误定义为:400, "自定义错误"
Dim htc As New HttpClient("http://*.*.*.*:52081")
htc.Timeout = 3
Dim ret As object
ret  = htc.GetData(True)
If htc.StatusCode = 200 Then
    msgbox(ret)
End If

OutPut.Show("Accept:" & htc.Accept)
OutPut.Show("UserAgent:" & htc.UserAgent)
OutPut.Show("更新日期:" & htc.LastModified)
OutPut.Show("状态码:" & htc.StatusCode)
OutPut.Show("状态描述:" & htc.StatusDescription)
OutPut.Show("内容类型:" & htc.ResponseContentType)
OutPut.Show("内容长度:" & htc.ResponseContentLength)
Output.Show("------Headers-------------")
For Each key As String  In htc.ResponseHeaders.Keys  '显示服务器返回的头部信息
    OutPut.Show(Key & ":" & htc.ResponseHeaders(key))
Next
Output.Show("------cookies-------------")
For Each key As String  In htc.rCookies.Keys  '显示服务器返回的头部信息
    OutPut.Show(Key & ":" & htc.rCookies(key))
Next

结果返回如下:(不能获取到自定义错误的描述)
Accept:
UserAgent:
更新日期:00:00:00
状态码:0
状态描述:
内容类型:
内容长度:0
------Headers-------------
------cookies-------------
Error:远程服务器返回错误: (400) 错误的请求。

[此贴子已经被作者于2020/7/23 17:18:00编辑过]

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


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

后端是怎么返回自定义错误的描述的?

 回到顶部
总数 15 1 2 下一页