异步结果为空,但响应中存在数据
本文关键字:响应 存在 数据 结果 异步 | 更新日期: 2023-09-27 18:28:35
我正在尝试使用异步方法使用Web服务。我用它的WSDL创建了一个客户端,并调用了这样的方法:
public static GetStockResponse GetResult()
{
var client = new ServiceSoapClient();
var inItems = new ArrayOfItemNo();
inItems.Add(new ItemNoRow { ItemNo = "0000001350" });
Task<GetStockResponse> task = client.GetStockAsync(inItems, "034");
task.Wait();
return task.Result;
}
在fiddler中,我可以看到状态为200 的呼叫
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body>
<GetStockRequest xmlns="http://www.unikum.se/pws"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ItemNo>
<ItemNoRow>
<ItemNo>0000001350</ItemNo>
</ItemNoRow>
</ItemNo>
<StoreID>034</StoreID>
</GetStockRequest>
回应:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body>
<GetStockResponse xmlns="http://www.unikum.se/pws">
<Items>
<Item>
<ItemNo>0000001350</ItemNo>
<DeliveryTimeText>4-6 veckor</DeliveryTimeText>
<DeliveryDays>42</DeliveryDays>
<Stores>
<Store>
<StoreID>034</StoreID>
<NotInERP>N</NotInERP>
<InStockQty>2</InStockQty>
<InShowRoom>N</InShowRoom>
</Store>
</Stores>
</Item>
</Items>
</GetStockResponse>
但是任务的结果(task.result)为空。它是一个GetStockResponse,但所有值都为null。
为什么?一切看起来都是对的,不是吗?
好吧,服务所有者提供的一些其他方法的更多测试清楚地表明,它们没有遵循自己WSDL中定义的响应结构。我可以看到,在一个更简单的测试中,它们部分遵循WSDL结构,我在这些特定属性上得到了正确的值,但在不同的属性上没有得到正确的值。因此,现在我可以更清楚地指出错误,并向服务提供商返回"请修复此问题,否则"响应。