什么是标准POST请求的结构

She*_*Pro 2 c# post http

我正在使用C#作为我的项目,任何人都可以告诉我什么是HTTP POST Requset的standered结构.如何在代码请求中附加像文件一样的POST数据.

我只想从我的代码本身创建一个POST请求,并发布不同的项目.

我已经检查了Ietf的RFC for http POST,但它太长了......

Joh*_*n K 5

规格供简单参考

我一直很欣赏HTTP Made Really Easy作为起点.它小巧,简洁,友好.

通常,您可以从本指南的简单样式中获得足够的实施细节(或至少足够的理解),以满足您的需求.它已经为我工作了很多次.POST有一节.该指南累积建立.

此外,如果您需要参考它们并获得更多详细信息,它会链接到正确的规范和更全面的资源.

.NET支持类

幸运的是,.NET Framework类库包含可以简化生活的更高级别的类.查看有关System.Net.WebClient的MSDN文档和示例(也不适合POST,有利于GET快速使用方法).考虑更灵活的System.Web.HttpRequestSystem.Web.HttpResponse对应类.

使用C#的示例

此代码示例显示了将二进制数据发布到流的概念.

这个方法被称为:

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)