213

和有什么区别

request.ContentType = "application/json; charset=utf-8";

request.ContentType = "application/x-www-form-urlencoded";
4

3 回答 3

244

第一种情况是告诉 Web 服务器您正在发布 JSON 数据,如下所示:

{"Name": "John Smith", "Age": 23}

第二种情况是告诉 Web 服务器您将对 URL 中的参数进行编码:

Name=John+Smith&Age=23
于 2012-03-26T21:26:36.800 回答
28

webRequest.ContentType = "应用程序/x-www-form-urlencoded";

  1. application/x-www-form-urlencoded的名称来自哪里?

    如果发送 HTTP GET请求,可以使用如下查询参数:

    http://example.com/path/to/page?名称=雪貂&颜色=紫色

    字段的内容被编码为查询字符串。的application/x-www-form- urlencoded名称来自之前的 url 查询参数,但查询参数位于请求正文而不是 url 的位置。

    整个表单数据作为长查询字符串发送。查询字符串包含由&字符分隔的名称-值对

    例如 field1=value1&field2=value2

  2. 它可以是简单的请求,称为简单 -不要触发预检检查

    简单请求必须具有一些属性。你可以在这里查看更多信息。其中之一是简单请求的 Content-Type 标头只允许三个值

    • 应用程序/x-www-form-urlencoded
    • 多部分/表单数据
    • 文本/纯文本

3.对于大多数平面参数树,application/x-www-form-urlencoded 已经过试验和测试。

request.ContentType = "应用程序/json; charset=utf-8";

  1. 数据将是json格式。

axiossuperagent是两个更流行的 npm HTTP 库,默认情况下使用 JSON 正文。

{
  "id": 1,
  "name": "Foo",
  "price": 123,
  "tags": [
    "Bar",
    "Eek"
  ],
  "stock": {
    "warehouse": 300,
    "retail": 20
  }
}
  1. “application/json” Content-Type 是 Preflighted requests之一。

现在,如果请求不是简单请求,浏览器会通过OPTIONS方法自动在原始请求之前发送一个 HTTP 请求,以检查发送原始请求是否安全。如果没问题,然后发送实际请求。你可以在这里查看更多信息。

  1. application/json对初学者友好。URL 编码的数组可能是一场噩梦!
于 2020-02-16T18:50:12.123 回答
0

两者之间最大的区别之一是对帖子进行 JSON 编码通常会保留发送的值的数据类型(只要它们是有效的 JSON 数据类型),而 application/x-www-form-urlencoded 通常会保留将所有属性转换为字符串。

例如,在 JSON 编码的帖子中:

{"Name": "John Smith", "Age": 23}

服务器很可能会将 Age 属性解析为整数 23。

而在

Name=John+Smith&Age=23

服务器很可能会将 Age 解析为字符串“23”。

当然,如果您使用其他层来解析这些值并将它们转换为适当的类型,这可能不是问题。

于 2021-11-21T18:59:39.203 回答