You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WebService间获取bsRequest并转换为XML格式

解决WebService接收Post字节数据并转换为XML的问题

首先得指出你当前WebService 2的代码逻辑走偏了:你的Getdata方法现在是主动去请求另一个外部URL,这和接收WebService 1发送过来的Post数据完全无关。我们需要调整逻辑,直接从当前的HTTP请求中读取WebService 1传递的bsRequest字节数组。

下面是具体的修改步骤和代码:

步骤1:重构WebService 2的Getdata方法

我们需要通过HttpContext.Current.Request获取当前请求的输入流,这个流里就存着WebService 1发过来的bsRequest字节数据。

修改后的WebService 2完整代码

using System.IO;
using System.Web;
using System.Xml.Serialization;
using System.Text;

[WebMethod]
public string Getdata()
{
    // 获取当前请求的输入流
    Stream requestStream = HttpContext.Current.Request.InputStream;
    // 重置流指针到起始位置(避免因流已被读取导致数据丢失)
    requestStream.Position = 0;

    // 读取流中的全部字节数据
    byte[] receivedBytes = new byte[requestStream.Length];
    requestStream.Read(receivedBytes, 0, receivedBytes.Length);

    // 把字节数组转换为XML字符串(和WebService 1保持UTF-8编码一致)
    string xmlContent = Encoding.UTF8.GetString(receivedBytes);

    // 可选:直接反序列化为EPCISDocumentType对象(和WebService 1的类型对应)
    // 注意:要确保WebService 2能访问到EPCISDocumentType这个类型(可放到共享类库或重复定义结构)
    EPCISDocumentType epcisDoc = null;
    using (MemoryStream ms = new MemoryStream(receivedBytes))
    {
        XmlSerializer xmlSerializer = new XmlSerializer(typeof(EPCISDocumentType));
        epcisDoc = (EPCISDocumentType)xmlSerializer.Deserialize(ms);
    }

    // 可根据需求返回XML字符串、处理后的对象,或其他XML格式结果
    return xmlContent;
}

关键细节说明

  • 请求流的获取:HttpContext.Current.Request.InputStream是Post请求的载体,WebService 1发送的bsRequest字节数组就存在这里。
  • 编码一致性:WebService 1指定了"text/xml; charset=utf-8",所以转换字符串时必须用UTF8编码,否则会出现乱码。
  • 对象反序列化:如果需要直接还原成EPCISDocumentType对象,只需复用WebService 1的XmlSerializer逻辑即可,前提是WebService 2能访问到这个类型定义。

额外注意点

  • 确认WebService 1的DoPost方法已正确发送字节数据,且Content-Type设置无误(你当前的代码已经设置了正确的类型,没问题)。
  • 如果WebService 2需要返回XML格式数据给WebService 1,直接返回XML字符串或序列化后的对象即可(ASMX WebService会自动处理XML序列化逻辑)。

内容的提问来源于stack exchange,提问作者Ngoc Duy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:49:05