还是看原创吧        https://blog.csdn.net/u013066244/article/details/78782459

版权声明:本文为博主原创文章,未经博主允许不得转载。    https://blog.csdn.net/u013066244/article/details/78782459
环境
操作系统:win7 
服务器:centos6.5

场景

因为有个脚本需要模拟浏览器发送api请求,该api是用来初始化数据的。 
具体脚本如下:

appKey="TKtXLPUuGkfaRHA"
appSecret="aArwoGW9dYXBGL79oR8Ns3ZXCkPcGFdb"
suffurl="v1/gghq/launch"
time=`date +%s`
sign=`java -Xbootclasspath/a:/home/webuser/gogoal_platform/ggopenapi/lib/snakeyaml.jar -jar ./ggsign/ggsign.jar  "$appKey" "$appSecret" "$time" "$suffurl"`
#echo "$sign"

curl -X POST -d "app_key=TKtXLPUuGkfaRHA&time_stamp=1512612452&sign=U7ETnXEaPUu1jNMq4jKf00fiGSM%3D" http://ggservice.sandbox.gofund.com.cn/v1/gghq/launch

这里我是使用的是post请求,参数是使用&来进行拼接,这种方式,是可以发送的,并成功的!

但是我如果改成json的形式来发送时总是会报错,就是服务器端接收不到参数:

appKey="TKtXLPUuGkfaRHA"
appSecret="aArwoGW9dYXBGL79oR8Ns3ZXCkPcGFdb"
suffurl="v1/gghq/launch"
time=`date +%s`
sign=`java -Xbootclasspath/a:/home/webuser/gogoal_platform/ggopenapi/lib/snakeyaml.jar -jar ./ggsign/ggsign.jar  "$appKey" "$appSecret" "$time" "$suffurl"`
echo "$sign"
echo $time

curl -H "Content-type: application/json" -X POST -d '{"app_key":"'$appKey'","time_stamp":"'$time'","sign":"'$sign'"}' http://ggservice.sandbox.gofund.com.cn/v1/gghq/launch

查了下官网curl教程:

post
参数:

必须类型参数:

-X POST
    -X PUT
content type:
    -H "Content-Type: application/x-www-form-urlencoded"

-H "Content-Type: application/json"

数据参数:
    form urlencoded: -d "param1=value1&param2=value2" or -d @data.txt
    json: -d '{"key1":"value1", "key2":"value2"}' or -d @data.json
1
2
3
4
5
6
7
8
9
10
11
12
官网例子:

POST application/x-www-form-urlencoded

application/x-www-form-urlencoded是默认的:

curl -d "param1=value1&param2=value2" -X POST http://localhost:3000/data
1
指明:

curl -d "param1=value1&param2=value2" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://localhost:3000/data
1
使用数据文件的话:

curl -d "@data.txt" -X POST http://localhost:3000/data
1
POST application/json

curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST http://localhost:3000/data
1
使用数据文件的话:

curl -d "@data.json" -X POST http://localhost:3000/data
1
data.json

{
  "key1":"value1",
  "key2":"value2"
}
1
2
3
4
data.txt

param1=value1&param2=value2
1
package.json

{
  "name": "postdemo",
  "version": "1.0.0",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "body-parser": "^1.15.0",
    "express": "^4.13.4"
  }
}
1
2
3
4
5
6
7
8
9
10
11
server.js

var app = require('express')();
var bodyParser = require('body-parser');

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

app.post('/data', function (req, res) {
  console.log(req.body);
  res.end();
});

app.listen(3000);
1
2
3
4
5
6
7
8
9
10
11
12
对比完后,我觉得我没有写错,但是POST的json形式就是不行。

唯一的区别就是,参数官网是写死的,而我使用的是变量。

最后我改成GET请求:

#!/bin/bash
set i=0
while true
do
appKey="TKtXLPUuGkfaRHA"
appSecret="aArwoGW9dYXBGL79oR8Ns3ZXCkPcGFdb"
suffurl="v1/gghq/launch"
time=`date +%s`
sign=`java -Xbootclasspath/a:/home/webuser/gogoal_platform/ggopenapi/lib/snakeyaml.jar -jar ./ggsign/ggsign.jar  "$appKey" "$appSecret" "$time" "$suffurl"`
#echo "$sign"
#echo $time
#url="http://ggservice.sandbox.gofund.com.cn/v1/gghq/launch"
url="http://ggservice.sandbox.gofund.com.cn/v1/gghq/launch?app_key=$appKey&time_stamp=$time&sign=$sign"
echo "$url"
#curl -H "Content-type: application/json" -X POST -d '{"app_key":"TKtXLPUuGkfaRHA","time_stamp":"1512612452","sign":"U7ETnXEaPUu1jNMq4jKf00fiGSM%3D"}' http://ggservice.sandbox.gofund.com.cn/v1/gghq/launch
#curl -X POST -d "app_key=TKtXLPUuGkfaRHA&time_stamp=1512612452&sign=U7ETnXEaPUu1jNMq4jKf00fiGSM%3D" http://ggservice.sandbox.gofund.com.cn/v1/gghq/launch
#$echo $url
#curlstr=`curl -i -X GET -H "'Content-type':'application/json'" $url -s`
curlstr=`curl -X GET -H "'Content-type':'application/json'" $url -s`
echo "$curlstr"

if [[ "$curlstr" =~ "成功" || "$curlstr" =~ "success" ]]
then
echo "循环次数"$i
break
else
sleep 2s
fi
let "i=i+1"
echo "循环次数"$i
done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
因为我这个脚本是在重启项目后,再执行的,而脚本里又要调接口,所以需要放在循环里,不停的执行,直到成功为止。(因为项目刚启动时,接口未必能立马调通)。

参数-s
在执行脚本时,其会打印一些不想要的东东:

类似如下:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2381  100  2381    0     0  25963      0 --:--:-- --:--:-- --:--:-- 25880
1
2
3
可以添加参数-s去掉这些统计信息。

变量的使用
虽然上面我使用变量没有成功,但是在stackoverflow,对变量的使用有个说明:

使用'和"的组合:

now=$(date +"%m-%d-%Y")
curl -X POST -H "Content-Type: application/json" \
    --data '{ "color":"red", "message":"Build failed '"$now"'", "message_format":"text" }' \
    https://api.hipchat.com/v2/room/<room>/notification?auth_token=<token>
1
2
3
4
5
对我的例子就是

appKey="TKtXLPUuGkfaRHA"
appSecret="aArwoGW9dYXBGL79oR8Ns3ZXCkPcGFdb"
suffurl="v1/gghq/launch"
time=`date +%s`
sign=`java -Xbootclasspath/a:/home/webuser/gogoal_platform/ggopenapi/lib/snakeyaml.jar -jar ./ggsign/ggsign.jar  "$appKey" "$appSecret" "$time" "$suffurl"`
echo "$sign"
echo $time
# 注意变量的引号
curl -H "Content-type: application/json" -X POST -d '{"app_key":"'"$appKey"'","time_stamp":"'"$time"'","sign":"'"$sign"'"}' http://ggservice.sandbox.gofund.com.cn/v1/gghq/launch
1
2
3
4
5
6
7
8
9
只使用双引号:

now=$(date +"%m-%d-%Y")
curl -X POST -H "Content-Type: application/json" \
    --data "{ \"color\":\"red\", \"message\":\"Build failed $now\", \"message_format\":\"text\" }" \
    https://api.hipchat.com/v2/room/<room>/notification?auth_token=<token>
1
2
3
4
对我的例子就是

# 以上省略。。。
curl -H "Content-type: application/json" -X POST -d "{\"app_key\":\"$appKey\",\"time_stamp\":\"$time\",\"sign\":\"$sign\"}" http://ggservice.sandbox.gofund.com.cn/v1/gghq/launch
1
2
说明:

使用'包裹变量,将使bash,从字面值上去看待它们; 
然而使用",将会用它们的变量值来进行替换。

参考地址:

Curl不显示统计信息% Total % Received %

subfuzion/curl.md

https://stackoverflow.com/a/26614517/6952713
--------------------- 
作者:山鬼谣me 
来源:CSDN 
原文:https://blog.csdn.net/u013066244/article/details/78782459 
版权声明:本文为博主原创文章,转载请附上博文链接!

curl发送请求简单实践相关推荐

  1. 使用PHP中的curl发送请求

    使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 初始化连接句柄: 设置CURL选项: 执行并获取结果: 释放VURL连接句柄. 下面的程序片段是 ...

  2. php curl发送post请求失败,PHP中的使用curl发送请求(GET请求和POST请求)

    使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 1.初始化连接句柄: 2.设置CURL选项: 3.执行并获取结果: 4.释放VURL连接句柄. ...

  3. java 向nodejs 发送请求简单案例

    java  向nodejs 发送请求简单案例 最近在做nodejs的东西,一直不明白java如何与nodejs建立连接,下面写了一个简单demo: nodejs端: var http = requir ...

  4. php CURL 发送请求详解

    cURL可以使用URL的语法模拟浏览器来传输数据,因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 ...

  5. curl 发送请求的几种示例

    发送post请求发送图片 前面指具体路径文件名 后面指传输的文件名 curl -F "pic=@/mnt/shared/Image/jpg/Screensho1t.jpg; filename ...

  6. CURL 发送请求示例

    1. curl命令介绍 在没有postman时,使用curl进行请求的测试,是挺好的一个工具. curl是一个非常实用的.用来与服务器之间传输数据的工具:支持的协议包括 (DIDICT, FILE, ...

  7. 技术分享 | 使用 cURL 发送请求

    cURL 是一个通过 URL 传输数据的,功能强大的命令行工具.cURL 可以与 Chrome Devtool 工具配合使用,把浏览器发送的真实请求还原出来,附带认证信息,脱离浏览器执行,方便开发者重 ...

  8. php使用curl发送请求时 添加header失效

    原文地址 场景复现 $headers['token'] = '12erthyj7y6gtfhh567tuygjhkjb';curl_setopt($ch, CURLOPT_HTTPHEADER, $h ...

  9. PHP爬取post网页数据,php curl发送post请求爬取webService接口数据简单实例

    header('Content-Type: text/html;charset=utf-8'); /** * 使用curl发送post请求 * @param $url * @param string ...

最新文章

  1. 精选30张炫酷的动态交互式图表,Pandas一键生成,通俗易懂
  2. mount: 未知的文件系统类型“vboxsf”_第六章--文件系统管理
  3. 【话题揭秘】某大型国有银行的敏捷落地实践
  4. CoreAnimation编程指南(七)图层Action
  5. Activiti - 新一代的开源BPM引擎
  6. VB讲课笔记05:数据输入输出
  7. 德鲁伊 oltp oltp_内存中OLTP –更快变得更简单!
  8. viper4android最新版卡刷包,viper4android fx音效驱动
  9. 冒泡法排序c语言源程序,冒泡排序算法实例程序(C语言)
  10. window10激活
  11. 华为网络篇 传输文件-08
  12. Frida android抓包
  13. c语言判断一个数是否为素数思路,C语言判断一个数是否为素数方法解析
  14. win10下LPT并口打印失败和POS打印机的钱箱不能打开,win10的坑
  15. FPGA芯片内两种存储器资源
  16. 小程序之botton默认带边框的问题
  17. Mumble安装部署教程
  18. 爬虫漫游指南:浏览器指纹
  19. 游戏账号交易平台,是专门为网络游戏提供相关交易服务的电子商务平台,主要从事网络游戏账号的交易。
  20. 关于静态变量的缺省值

热门文章

  1. MATLAB与FPGA数字信号处理(数字滤波器设计)、数字IC、无线通信、图像处理、信道编码系列
  2. e480换高分屏_ThinkPadE480电脑(i5-8250u 8G内存 256G固态 高分屏0QCD 14英寸) 京东5699元...
  3. 信息系统项目管理师 - 项目范围管理
  4. 【自然语言处理】ELMo 讲解
  5. Aggregation-Based Graph Convolutional Hashing forUnsupervised Cross-Modal Retrieval
  6. 【转】源nat和目的nat的区别
  7. 肇庆学院计算机科学与技术专业多少分能进,2020肇庆学院录取分数线是多少-各专业分数线...
  8. python高效识别验证码 极简 dddd
  9. 已解决org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML异
  10. 1069 微博转发抽奖