我正在尝试使用responsebuilder创建响应。 当我在实体中传递字符串时,它工作正常,但是当我传递一些错误类时,它不起作用。
这是代码
1)工作正常
Option Explicit
Public Sub Test()
Debug.Print CompareMe("Japan;US", "US;Japan")
Debug.Print CompareMe("abcefg", "efgabc")
Debug.Print CompareMe("abcefg", "e1fgabc")
Debug.Print CompareMe("vit", "vitt")
End Sub
Public Function CompareMe(str1 As String, str2 As String) As Boolean
Dim varStr1 As Variant
Dim varStr2 As Variant
ReDim varStr1(Len(str1))
ReDim varStr2(Len(str2))
varStr1 = StrToArray(str1)
varStr2 = StrToArray(str2)
Call BubbleSort(varStr1)
Call BubbleSort(varStr2)
CompareMe = (Join(varStr1, "") = Join(varStr2, ""))
End Function
Public Sub BubbleSort(ByRef list As Variant)
Dim First As Long
Dim Last As Long
Dim i As Long
Dim j As Long
Dim Temp As String
First = LBound(list)
Last = UBound(list)
For i = First To Last - 1
For j = i + 1 To Last
If list(i) > list(j) Then
Temp = list(j)
list(j) = list(i)
list(i) = Temp
End If
Next j
Next i
End Sub
Public Function StrToArray(str As String) As Variant
Dim buff() As String
Dim i As Long
ReDim buff(Len(str) - 1)
For i = 1 To Len(str)
buff(i - 1) = Mid$(str, i, 1)
Next
StrToArray = buff
End Function
2)不工作
Response.status(400).entity("test").build();
上面的代码我收到错误
Response.status(400).entity(new MyCustomExceptions(400,"My bad request")).build();
当我使用上面的代码调用此服务时,我得到500错误而不是400.但是在第一种情况下我得到了正确的400错误。
答案 0 :(得分:2)
JAX-RS允许您定义Java异常到HTTP错误响应的直接映射。
通过扩展WebApplicationException
,您可以创建特定于应用程序的异常,这些异常使用状态代码和可选消息构建HTTP响应,作为响应的主体。
考虑到这一点,您可以抛出一个扩展Response
的BadRequestException
而不是返回WebApplicationException
,而是将其映射到状态代码为{{3}的HTTP响应}:
throw new BadRequestException("My bad request");
有关JAX-RS中错误处理的更多详细信息,请参阅此400
。
WebApplicationException
为方便起见,answer目前通过以下例外进行扩展(可以扩展它们以创建自己的例外):
WebApplicationException
:重定向错误的RedirectionException
状态代码3xx
:ClientErrorException
客户端错误的状态代码
4xx
:BadRequestException
错误请求400
:ForbiddenException
禁止403
:NotAcceptableException
无法接受406
:NotAllowedException
方法不允许405
:NotAuthorizedException
未经授权401
:NotFoundException
未找到404
:NotSupportedException
不支持的媒体类型415
:ServerErrorException
服务器错误的状态代码
答案 1 :(得分:1)
您传递的HTTPHeader中accept
参数的值是多少?看起来像text/plain
,你正试图返回一个对象。
accept
值作为application/json
传递。 OR 更改代码以响应添加类型Json/XML
Response.status(400).type(MediaType.APPLICATION_JSON).entity(new MyCustomExceptions(400,"My bad request")).build();