如何开发一接口 要求是外界会通过POST方法向HTTP发送一个xml文件

屌丝女士111 2009-10-09 11:21:03
如何开发一接口 要求是外界会通过POST方法向HTTP发送一个xml文件 我接收并处理这个xml ???
当然是外界是需要我们提供的认证信息的通过才能够发送成功 例如 地址 officeid

可能我描述的不够清晰 请指教一二...



...全文
216 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
屌丝女士111 2009-10-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sp1234 的回复:]
理解这个“要求”的关键点根本不在asp.net开发,而在于你是否写过一两个tcp通讯小程序,是否理解http协议(其实只要1小时)并抓包看看web通讯都是什么内容。会者不难,难者不会。
[/Quote]

恩 我一定多学习
  • 打赏
  • 举报
回复
理解这个“要求”的关键点根本不在asp.net开发,而在于你是否写过一两个tcp通讯小程序,是否理解http协议(其实只要1小时)并抓包看看web通讯都是什么内容。会者不难,难者不会。
chy710 2009-10-09
  • 打赏
  • 举报
回复
传说中的Rest接口??

好好研究一下http post请求与响应,这个在企业开发中很常见!
  • 打赏
  • 举报
回复
你使用asp.net做出来的任何应用功能,例如ashx、aspx、asmx、svc等,都是可以满足“通过POST方法向HTTP发送一个xml文件”的。这个反而要问你的客户端开发人员懂的怎样发送信息才对。

如果你可以决定,你就设计一个web service(asmx)就可以了,将“xml文件”作为一个byte[]参数传递来考虑,这就满足了那个说法。

往往,有些pm道听图说,连他自己也不懂得一句话的背后的技术含义是什么,就把任务发布给程序员来“执行”了。这种时候,你不用给他说清楚,自己先去搞清楚底层的技术的来龙去脉就可以了。你的这个描述,我就有这个感觉。

你自己写使用TcpListenner写一个十几行的小程序,访问一下ashx、aspx、asmx、svc等,就能理解“通过Post方法向http发送”的含义。当然,如果你从来没有了解过tcp通讯,花几天时间对这个底层基础了解一下比较好。同时了解一下如何调试、抓包http消息内容。

实际上从asp.net开发角度,你的这个问题,最灵活(最低级)的方式是开发ashx,最复杂(最高级)的方式是WCF。web服务则是许多程序员更快上手的。
shalen520 2009-10-09
  • 打赏
  • 举报
回复
另:认证信息,如果觉得明文传递不安全,可以考虑以某种约定的算法进行加密~
shalen520 2009-10-09
  • 打赏
  • 举报
回复
写一个页面,如ReceivePost.aspx

对面post 数据到链接ReceivePost.aspx?auth=abcdefg

在pagelaod里面写

//获取授权信息
string auth = Request.QueryString("auth");
//验证授权信息,略过

//读取post过来的数据
MemoryStream ms = Request.InputStream;
StreamReader sr = new StreamReader(ms);
String xml = sr.ReadToEnd();

//加载xml
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xml);
//下面就是处理咯
屌丝女士111 2009-10-09
  • 打赏
  • 举报
回复
宁外 是别人向我发送http post请求 我处理
屌丝女士111 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shalen520 的回复:]
一个页面,一个httphandler,都可以

拿到Request.InputStream然后转为字符串就可以处理了

认证信息可以放在连接后面作为参数传递
[/Quote]

可否有例子参考 我实在是不知道如何写??? 谢谢拉
shalen520 2009-10-09
  • 打赏
  • 举报
回复
一个页面,一个httphandler,都可以

拿到Request.InputStream然后转为字符串就可以处理了

认证信息可以放在连接后面作为参数传递
过河石头 2009-10-09
  • 打赏
  • 举报
回复
关注一下
wuyq11 2009-10-09
  • 打赏
  • 举报
回复
public void PostXml(string url, string xml)
{
byte[] bytes = Encoding.UTF8.GetBytes(xml);
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.Method = "POST";
request.ContentLength = bytes.Length;
request.ContentType = "text/xml";
using (Stream requestStream = request.GetRequestStream()) {
requestStream.Write(bytes, 0, bytes.Length);
}
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
if (response.StatusCode != HttpStatusCode.OK) {
string message = String.Format("POST failed. Received HTTP {0}",
response.StatusCode);
throw new ApplicationException(message);
}
}
接收端通过Request.InputStream读取:
byte[] byts = new byte[Request.InputStream.Length];
Request.InputStream.Read(byts,0,byts.Length);
string req = System.Text.Encoding.Default.GetString(byts);
req = Server.UrlDecode(req);

xmlDoc = new XmlDocument();
xmlDoc.load(Request.InputStream);

通过地址传递密钥。web services比较常用,wcf更好。

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧