Atitit 发送post http 功能总结目录1. 常见三种模式 Form-data Form-urlencode Raw 12. Php code 12.1. urlencode

Atitit 发送post http 功能总结

目录

1. 常见三种模式 Form-data  Form-urlencode  Raw

2. Php code

2.1. urlencode  方式 默认

2.2. Json模式  设置 Content-Type: application/json

2.3. 纯文本  'Content-Type: text/plain

3. Nodejs  'axios' lib

4. Java

5. Js web

6. Ref

  1. 常见三种模式 Form-data  Form-urlencode  Raw  

  • application/x-www-form-urlencoded
  • multipart/form-data

urlencode  方式 默认

如果发送方没有添加 Content-Type:服务方deflt user urlencode  来解析。。。

Json 和纯文本都要设置  'Content-Type: text/plain; charset=utf-8',

Content-Type: application/json

其实不指定 Content-Type:

应用程序/x-www-form-urlencoded

application/x-www-form-urlencoded内容类型描述了在单个块中发送在HTTP消息体形式的数据。与 GET 请求中 URL 的查询部分不同,数据的长度不受限制。但是,媒体服务器拒绝超过配置参数指定大小的请求MaxFileUploadSize

此内容类型对于发送包含非 ASCII 字符的大量二进制数据或文本效率低下,并且不允许您上传文件。出于这些目的,Micro Focus建议将数据发送为multipart/form-data(请参阅Multipart/form-data)。

在请求中:

  • 使用等号 ( =)将每个参数与其值分开。
  • 用逗号 ( ,)分隔多个值。
  • 用与号 ( &)分隔每个参数-值对。
  • Base-64 编码任何二进制数据。
  • URL 对所有非字母数字字符进行编码,包括 base-64 编码数据中的字符。

多部分/表单数据

multipart/form-data内容类型中,HTTP 消息体分为多个部分,每个部分包含一个离散的数据部分。

每个消息部分都需要一个标头,其中包含有关该部分数据的信息。每个部分可以包含不同的内容类型;例如,text/plainimage/pngimage/gif,或multipart/mixed。如果参数指定多个文件,则必须multipart/mixed在部分标题中指定内容类型。

每个消息部分的编码是可选的。消息部分标头必须指定除默认 (7BIT) 之外的任何编码。

Multipart/form-data 非常适合发送非 ASCII 或二进制数据,并且是唯一允许您上传文件的内容类型。有关表单数据的更多信息,请参阅http://www.w3.org/TR/html401/interact/forms.html

  1. Php code

urlencode  方式 默认

如果发送方没有添加 Content-Type:服务方deflt user urlencode  来解析。。。

Json模式  设置 Content-Type: application/json

Rest一般默认使用raw模式

CURLOPT_RETURNTRANSFER

将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出

使用PHP curl获取页面内容或提交数据,有时候希望返回的内容作为变量储存,而不是直接输出。这个时候就必需设置curl的CURLOPT_RETURNTRANSFER选项为1或true。

$response = curl_exec($ch); // 已经获取到内容,没有输出到页面上。

curl_exec($ch);  直接输出到页面

/**
 * PHPJson
 *
 * @param $url url
 * @param $jsonStr 送的json字符串
 * @return array
 */
function http_post_json($url, $jsonStr)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//for setinto var not echo out
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json; charset=utf-8',
            'Content-Length: ' . strlen($jsonStr)
        )
    );
    $response_returnContent = curl_exec($ch);   //context ret
    $curl_getinfo = curl_getinfo($ch);
    echo 'curl_getinfo'.PHP_EOL;
    echo json_encode($curl_getinfo);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);   //

    curl_close($ch);

    return array($httpCode, $response_returnContent);
}

纯文本  'Content-Type: text/plain

//send is txt ,,let server use txt parser..
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: text/plain; charset=utf-8',
        'Content-Length: ' . strlen($str)
    )
);

  1. Nodejs  'axios' lib

const axios = require('axios')

axios

  .post('https://whatever.com/todos', {

    todo: 'Buy the milk'

  })

  .then(res => {

    console.log(`statusCode: ${res.statusCode}`)

    console.log(res)

  })

  .catch(error => {

    console.error(error)

  })

  1. Java
  2. Js web
  3. Ref

CURL中curl_setopt的中文含义 - 天行侠 - 博客园

posted @   attilaxAti  阅读(88)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2020-06-24 Atitit 开发效率补充哦哦那个、、 目录 1. 架构方法上选择快速开发的架构 1 2. 编程方法上选择快速的编程范式和编程方法 1 3. 开发方法论上需要快速的方法 2 1.架构方法上选择快速
2020-06-24 Atitit arch design context软件架构设计的内容 目录 1. 考虑到架构设计原则 1 1.1. 开发效率 稳定性 可靠些等 性能 1 1.2. 简单原则则 1 1.3. 配置
点击右上角即可分享
微信分享提示