以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  HttpClient怎么捕获错误?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=152844)

--  作者:luodang2050
--  发布时间:2020/7/23 15:38:00
--  HttpClient怎么捕获错误?
如题,如下示例,假设服务端返回异常状态码,客户端怎么解析异常状态码,进行正确的响应了?用了try貌似不起作用
Dim hc As New HttpClient("http://127.0.0.1/gettime.htm")
Dim
 dt As Date = hc.GetData()
MessageBox
.Show(dt)

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

--  作者:有点蓝
--  发布时间:2020/7/23 16:07:00
--  
getData(True)就是可以在结果返回异常信息,这个帮助没有的


--  作者:luodang2050
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2020/7/23 16:27:00
--  
直接取cookies里面的内容
--  作者:luodang2050
--  发布时间:2020/7/23 16:37:00
--  
请问cookie里面只能取到状态码,无法取到自定义状态描述的是么?
--  作者:有点蓝
--  发布时间:2020/7/23 16:43:00
--  
具体怎么做的?做个例子发上来看看
--  作者:luodang2050
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2020/7/23 16:55:00
--  
后端是怎么返回自定义错误的描述的?