文章 姚 鑫 · 八月 4, 2024 2m read

第十二章 在 Web 服务中定义自定义处理 - 实现 ProcessBody()

元素。该流包含 XML 片段,而不是完整的 XML 文档。
  • responseBody,是序列化为 %Library.CharacterStream 实例的响应主体。此流通过引用传递,最初为空。
  • 如果在 Web 服务中实现此方法,则该方法应执行以下操作:

    1. 检查操作并相应地分支。例如:
     if action["action1" { 
      //details
     }
    
    1. 使用 requestBodyRead() 方法获取 SOAP 。例如:
     set request=requestBody.Read()
    
    1. 使用 $EXTRACT 等工具解析此流。例如:
     set in1=""
     set in2=""  
     set contents=$extract(request,$length(in1)+1,*-$length(in2))
    
    1. 如果在处理请求期间发生错误,则使用 ReturnFault() 方法以通常的方式返回错误。
    2. 使用响应流的 Write() 方法写入将成为 子元素的 XML 片段。例如:
     set in1=""
     set in2=""  
     set request=requestBody.Read()
     if ($extract(request,1,$length(in1))'=in1) || ($extract(request,*-$length(in2)+1,*)'=in2) {
       do responseBody.Write("Bad Request: "_request)
       quit 1
     }
    
     set out1=""
     set out2=""
     do responseBody.Write(out1)
     do responseBody.Write($extract(request,$length(in1)+1,*-$length(in2)))
     do responseBody.Write(out2)
    
    1. 如果创建了响应流,则返回 1。否则,返回 0,这导致运行与给定操作相关的 Web 方法。