我正在使用C#作为我的项目,任何人都可以告诉我什么是HTTP POST Requset的standered结构.如何在代码请求中附加像文件一样的POST数据.
我只想从我的代码本身创建一个POST请求,并发布不同的项目.
我已经检查了Ietf的RFC for http POST,但它太长了......
我一直很欣赏HTTP Made Really Easy作为起点.它小巧,简洁,友好.
通常,您可以从本指南的简单样式中获得足够的实施细节(或至少足够的理解),以满足您的需求.它已经为我工作了很多次.POST有一节.该指南累积建立.
此外,如果您需要参考它们并获得更多详细信息,它会链接到正确的规范和更全面的资源.
幸运的是,.NET Framework类库包含可以简化生活的更高级别的类.查看有关System.Net.WebClient的MSDN文档和示例(也不适合POST,有利于GET快速使用方法).考虑更灵活的System.Web.HttpRequest和System.Web.HttpResponse对应类.
此代码示例显示了将二进制数据发布到流的概念.
这个方法被称为:
PostMyData(Stream_instance, "http://url_to_post_to");
Run Code Online (Sandbox Code Playgroud)
涉及的命名空间是:
using System.IO;
using System.Net;
Run Code Online (Sandbox Code Playgroud)
自定义方法看起来如下所示.
注意:概念取自MSDN示例代码.
虽然我将MIME类型application/octet-stream用于通用二进制数据,但您可以使用此mime类型列表中的任何已知类型来定位您要发送的二进制数据类型.
public int PostMyData(Stream binaryData, string postToUrl) {
// make http request
var request = (HttpWebRequest)WebRequest.Create(postToUrl);
request.Method = "POST";
request.ContentType = "application/octet-stream"; // binary data:
// data (bytes) that will be posted in body of request
var streamOut = request.GetRequestStream();
binaryData.CopyTo(streamOut);
// post and get response
using (var response = (HttpWebResponse)request.GetResponse()) {
var code = response.StatusCode;
return (int)code;
}
}
Run Code Online (Sandbox Code Playgroud)