异步结果为空,但响应中存在数据

本文关键字:响应 存在 数据 结果 异步 | 更新日期: 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结构,我在这些特定属性上得到了正确的值,但在不同的属性上没有得到正确的值。因此,现在我可以更清楚地指出错误,并向服务提供商返回"请修复此问题,否则"响应。