Curl请求和Sed查找获取指定文本

curl 的用法指南

Shell使用grep和sed命令提取json数据中指定字段的值

今天需要做两个定时任务,通过jenkins 定时去调用某个服务的几个接口。在获取token的接口中,返回的结果并不是所需要的那种格式,需要通过文本处理将token解析出来再带上此token 去访问另外一个接口。

Curl 请求(GET)

以 GET 方式请求数据

curl -G -d 'url=xxx' http://xxx/xxx

通过 GET 的方式获取到返回的token

{
    "code":0,
    "message":"OK",
    "data":{
        "token":"xxx.xxx.xxx"
    }
}

提取指定文本最终的命令

cat result.json | sed 's/,/\n/g' | grep "token" | sed 's/:/\n/g' | sed '1d' | sed 's/}//g' | sed '1d'| sed 's/"//g'

Sed + grep 解析文本获取token

第一个sed是将 , 换成 \n

{
    "code":0
    "message":"OK"
    "data":{
        "token":"xxx.xxx.xxx"
    }
}

第二个grep 是将 token 关键字找出来,并单独列出来

"data":{"token":"xxx.xxx.xxx"}}

第三个 sed是将 : 换成 \n

"data"
{"token"
"xxx.xxx.xxx"}}

第四个sed 是删除第一行

{"token"
"xxx.xxx.xxx"}}

第五个sed是将 } 替换为空字符

{"token"
"xxx.xxx.xxx"

第六个sed是删除第一行

"xxx.xxx.xxx"

第五个sed是将 " 用空字符替换掉,最后的g的参数表示替换所有符合的引号

xxx.xxx.xxx

将token保存下来

token=(cat result.json | sed 's/,/\n/g' | grep "token" | sed 's/:/\n/g' | sed '1d' | sed 's/}//g' | sed '1d'| sed 's/"//g')

Curl 请求(POST)

带上刚解析出来的token去访问另外一个接口

public RestApiResult saveXxx(@RequestParam String accessToken,
                                               @RequestParam String storeId,
                                               @RequestParam String type)

再通过curl的 post请求 就可以访问该接口了

curl -d 'storeId=xxx&accessToken='$token'&type=xxx' http://xxx/xxx
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!针对您的问题,您可以在使用 PHP 的 cURL 库发送请求时设置 `CURLOPT_COOKIEJAR` 选项来保存服务器返回的 cookie,然后在后续的请求中使用 `CURLOPT_COOKIEFILE` 选项来发送该 cookie。以下是一个简单的示例代码: ```php $url = 'http://example.com/login'; $ch = curl_init($url); // 设置请求选项 curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, ['username' => 'your_username', 'password' => 'your_password']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 设置保存 cookie 的文件路径 $cookie_file = tempnam(sys_get_temp_dir(), 'curl_cookie'); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); // 发送登录请求 $response = curl_exec($ch); // 关闭 cURL 句柄 curl_close($ch); // 发送带有 cookie 的请求 $url = 'http://example.com/profile'; $ch = curl_init($url); // 设置请求选项 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 设置发送 cookie 的文件路径 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); // 发送请求 $response = curl_exec($ch); // 关闭 cURL 句柄 curl_close($ch); ``` 当您运行上述代码时,它会向 `http://example.com/login` 发送一个带有用户名和密码的 POST 请求来登录,然后将服务器返回的 cookie 保存到一个临时文件中。接下来,它会向 `http://example.com/profile` 发送一个 GET 请求,并使用前面保存的 cookie 来进行身份验证。您可以根据实际情况修改代码中的请求地址和其他选项。希望这可以帮助您!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值