- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Axis 1.4 连接到 Web 服务。该服务通过使用包含错误描述和 HTTP 状态代码 202 的 SOAP 信封进行响应来发出错误信号。响应如下所示:
<soap:Envelope>
<soap:Body>
<TestResponse>
<TestResult>wrong format</TestResult>
</TestResponse>
</soap:Body>
</soap:Envelope>
测试响应在 WSDL 中描述:
<s:element name="TestResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="TestResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
所以,在我看来一切都好。问题是,我没有收到 Axis 生成的 stub 的错误消息,而是收到 null
。在调试时,我在 HTTPSender
类第 705 行中找到了该行:
if ((returnCode > 199) && (returnCode < 300)) {
if (returnCode == 202) {
return inp;
}
// SOAP return is OK - so fall through
}
它跳过解码 SOAP 信封的代码。所以,最后,我发送了错误的请求(它可以是任何运行时的内容,例如用户密码过期),我收到错误描述,但因为我使用 Axis,所以我无法访问它并且只接收 null
,这使得调试非常困难(我发布的响应是我使用 Wireshark 发现的)。
我的问题是,这是错误还是功能?制作 Web 服务滥用 HTTP 状态 202 或标准的公司是否允许这样做,而 Axis 太原始而无法支持它?充其量我想避免使用来自apache或类似的东西的HttpClient
手动编码通信......
最佳答案
这看起来像是一个错误。 HTTP 202 Accepted 状态代码用于指示请求已被接受,但需要进一步处理才能完成。响应应该有一个Location
header ,表示可以对服务进行的回调,以检查请求状态,以及一个带有描述性消息的可选正文。
对于 Web 服务,我希望服务实现者能够处理主体响应,只要其内容与服务契约(在本例中为 WSDL)相匹配。但 Axis 的实现者可能有不同的感受。
无论如何,供应商错误地使用 202 状态代码来返回错误,这是问题的一个(大)部分。
关于java - 当 HTTP 状态为 202 时,Axis 1.4 不解码 SOAP 信封 - 错误还是功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9394258/
我正在尝试使用 PHP 的内置 soap 函数登录 API。我得到了这样的结果。 [LoginResult]=> false, [ErrorMsg] => Login failed with the
我将 Odata 添加到我的项目中,这样我就可以使用像 $filter 这样的 url-query-parameters 。使用演示类/ Controller ,输出现在如下所示: { "@oda
我有一个 SOAP 体,我需要根据此 wsdl 定义填充正确的元素。
我刚刚开始学习JSP,我需要发送一条soap消息,我将消息创建为 string 。我只想将其发送到 url,我找不到任何简单的示例,我创建了一个 jsp 页面和一个像这样的类:
我想知道无论如何要更改 WCF SOAP 请求的命名空间前缀? 正如您在下面的示例中看到的,信封的 namespace “http://www.w3.org/2005/08/addressing”带有
我在 Web 服务中使用 JaxWs/JaxB,但我不喜欢我的所有 xml 文件(无论是我发送还是接收的文件)都包含 SOAP 信封这一事实。我怎样才能摆脱那些? 我只需要一个干净的 xml 文件,W
当我尝试执行这段代码时: mmurl = 'http://server/_mmwebext/mmwebext.dll?WSDL?server=localhost' mmclient = Client(
我有以下方法: 字符串[] getEmployeeDetails ( int employeeNumber ); 关联请求如下所示: 1016577 此示例来自此链接 [ htt
我正在尝试为第三方库生成的信封添加日志记录。我正在修改下面的 updateMetadataField() 方法。 我正在像这样创建 $client: $client = new UpdateClien
我需要在ksoap2(安卓版)生成的信封中添加一个属性(xmlns:n0="urn:checkOTP")。 ... 转向 ... 错误代码是: W/System.er
我知道已经有类似的帖子,但没有一个对我有帮助。 我在反序列化/解码 xml 时遇到问题。 我的代码如下所示: public class SoapTest { public static Str
我正在使用 Camel 代理 Web 服务(我需要首先修改肥皂头)。我使用 CXF_MESSAGE 数据格式,因为它允许我轻松更改肥皂头。使用soapui发送肥皂消息工作正常,我可以看到它到达真正的网
我正在尝试连接到一个 soap 服务,它希望我的请求使用标准 XML 加密(根据文档)进行加密。我正在使用 Python 请求将请求发送到端点,但不幸的是,我不知道如何从原始请求发送到加密请求。 我有
我真的需要将某个命名空间添加到 WSDL 中未指定的 SOAP 信封中,出于某种原因我已经尝试在 SoapCliente 构造函数中使用“uri”参数,但它不起作用 如何将此命名空间添加到 SoapE
是否有一种简单的方法可以从 Dingo API 响应中删除“数据”信封。 当我使用这个 Transformer 来转换用户模型时: class UserTransformer extends Eloq
使用断点时出现此错误,并且进入catch异常。 httpTransport.call(SOAP_ACTION, envelope); 是httpTransport连接不应该是null吗? pu
我正在努力了解 SOAP 服务的工作原理。我的客户端使用 Java,服务使用 WCF(尽管理论上这并不重要)。如果给我一个 SOAP 信封示例并执行以下操作: -Build a SOAP envelo
我想将命名空间设置添加到我的 soap 信封中。我想在 IClientMessageInspector 的 BeforeSendRequest 中更改它,或者您有更优雅的方法。 例如 ws:
我正在使用 axis2 客户端调用一个 WebService,因为我使用 OMElement 添加了 header 。执行时我遇到异常。我只想打印并检查请求的整个 SoapEnvelope。 请建议我
我一直在尝试使用 node-soap 连接到 Web 服务,但不断收到错误“无法读取未定义的属性‘Body’”。我相信问题是由node-soap生成的SOAP信封不正确,需要使用ns1而不是tns。请
我是一名优秀的程序员,十分优秀!