利用ASP发送和接收XML数据的处理方法

本文展示了如何使用XMLHTTP对象进行HTTP POST请求,并详细解释了如何从响应中读取和解析数据,包括转码处理及使用DOMDocument对象加载POST数据的过程。
dim Https 
set Https=server.createobject("MSXML2.XMLHTTP") 
'定义一个XMLHTTP对像 
Https.open "POST","http://127.0.0.1/testpost/response.asp",false 
Https.send " echo 123456 987654 11111 22222 " 
if Https.readystate=4 then 
 response.write "提交成功" 
 'readstate读取状态为4则成功,继续后面的,不成功当然就不用继续处理了 
 dim objstream 
 set objstream = Server.CreateObject("adodb.stream") 
 '定义一个stream,因为读过来的直接拿出来是乱码的,所以得处理一下 
 objstream.Type = 1 
 objstream.Mode =3 
 objstream.Open 
 objstream.Write Https.responseBody 
 objstream.Position = 0 
 objstream.Type = 2 
 objstream.Charset = "GB2312" 
 html = objstream.ReadText 
 '转好码,就放到html里,好关闭这些对像 
 objstream.Close 
 set objstream = nothing 
 set https=nothing 
end if 
response.write html 


response.asp 


'创建DOMDocument对象 
Set xml = Server.CreateObject ("msxml2.DOMDocument") 
xml.async = False 


'装载POST数据 
xml.Load Request 
If xml.parseError.errorCode <> 0 Then 
 response.write "不能正确接收数据" & "Description: " & xml.parseError.reason & "<br>Line: " & xml.parseError.Line 
End If 


set blogchild=xml.getElementsByTagName("misc_command") 
'the_text=blogchild.item(0).childnodes(1).text 
'the_text=blogchild.item(0).text 
'for i=0 to blogchild.length-1 
response.write the_text 

### 使用 C# 发送接收 XML 数据 #### 构建 Web API 控制器来处理 HTTP 请求响应 Web API 控制器可以通过返回 `IActionResult` 或其派生类型(如 `OkObjectResult`, `BadRequestResult` 等)来发送 HTTP 响应[^1]。为了实现这一点,首先需要设置一个能够接受 POST 请求的方法,并配置该方法以解析传入的 XML 数据。 对于接收 XML 数据的情况,在 ASP.NET Core 中可以利用 `[FromBody]` 属性配合自定义输入格式化程序或默认支持的 XML 序列化机制。下面展示了一个用于接收 XML 的控制器动作示例: ```csharp using Microsoft.AspNetCore.Mvc; // ... other usings ... [ApiController] [Route("[controller]")] public class XmlDataController : ControllerBase { [HttpPost] public IActionResult Post([FromBody] Person person) { if (!ModelState.IsValid || person == null) return BadRequest(); // Process the received 'person' object here... return Ok(new { Message = "Person data successfully processed." }); } } ``` 此代码片段假设存在名为 `Person` 的模型类,它已经被适当地标记以便于 XML 反序列化[^2]。 #### 定义可被序列化的对象结构 要使 .NET 能够正确地将接收到的数据映射到强类型的实例上,必须确保目标类具有适当的属性装饰符。例如,如果希望从客户端接收到如下形式的 XML 文档,则应该像这样设计 `Person` 类: ```xml <Person> <Name>John Doe</Name> <Age>30</Age> </Person> ``` 对应的 C# 类定义如下所示: ```csharp using System.Xml.Serialization; [XmlRoot("Person")] public class Person { [XmlElement("Name")] public string Name { get; set; } [XmlElement("Age")] public int Age { get; set; } } ``` #### 向服务器端提交 XML 并获取响应 当准备向上述 Web API 提交 XML 数据时,可以选择多种方式完成这一任务。这里给出一种基于 HttpClient 的简单例子,展示了怎样构建请求消息体并将结果作为字符串打印出来: ```csharp using System.Net.Http; using System.Text; using System.Threading.Tasks; class Program { private static async Task Main(string[] args) { var client = new HttpClient(); var xmlContent = @"<Person><Name>Jane Smith</Name><Age>28</Age></Person>"; HttpContent content = new StringContent(xmlContent, Encoding.UTF8, "application/xml"); HttpResponseMessage response = await client.PostAsync("https://example.com/api/XmlData", content); string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } } ``` 这段代码会构造一条包含特定 XML 内容的消息,并将其发送给指定 URL 上的服务端点;之后再读取服务端返回的内容并显示在控制台上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值