zoukankan      html  css  js  c++  java
  • 浅析 curl 命令用法及反向思维(服务器请求应用)的应用场景

      curl 是常用的命令行工具,用来请求 Web 服务器,它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。

      可以看下阮一峰的博客:curl网站开发指南curl 的用法指南

    一、curl 常用开发总结

    1、直接在curl命令后加上网址,就可以看到网页源码:curl www.sina.com

      如果要把这个网页保存下来,可以使用`-o`参数,这就相当于使用wget命令了:curl -o [文件名] www.sina.com

    2、自动跳转:有的网址是自动跳转的。使用`-L`参数,curl就会跳转到新的网址:curl -L www.sina.com

    3、显示头信息:`-i`参数可以显示http response的头信息,连同网页代码一起:curl -i www.sina.com

    4、显示通信过程:`-v`参数可以显示一次http通信的整个过程,包括端口连接和http request头信息:curl -v www.sina.com

      如果你觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。

    curl --trace output.txt www.sina.com
    curl --trace-ascii output.txt www.sina.com

    5、发送表单信息

    // 发送表单信息有GET和POST两种方法。
    // GET方法相对简单,只要把数据附在网址后面就行。
    curl example.com/form.cgi?data=xxx
    
    // POST方法必须把数据和网址分开,curl就要用到--data参数。
    curl -X POST --data "data=xxx" example.com/form.cgi
    
    // 如果你的数据没有经过表单编码,还可以让curl为你编码,参数是`--data-urlencode`。
    curl -X POST--data-urlencode "date=April 1" example.com/form.cgi

    6、HTTP动词:curl 默认的HTTP动词是GET,使用`-X`参数可以支持其他动词。

    curl -X POST www.example.com
    
    curl -X DELETE www.example.com

    二、curl 常用用法总结

    -A 参数指定客户端的用户代理标头,即User-Agent

    -b 参数用来向服务器发送 Cookie

    -c 参数将服务器设置的 Cookie 写入一个文件

    -d 参数用于发送 POST 请求的数据体

    --data-urlencode 参数等同于-d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码

    -e 参数用来设置 HTTP 的标头Referer,表示请求的来源

    -F 参数用来向服务器上传二进制文件

    -G 参数用来构造 URL 的查询字符串

    -k 参数指定跳过 SSL 检测

    -L 参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向

    -o 参数将服务器的回应保存成文件,等同于wget命令

    -O 参数将服务器回应保存成文件,并将 URL 的最后部分当作文件名

    -s 参数将不输出错误和进度信息

    -S 参数指定只输出错误信息,通常与 -s 一起使用

    -u 参数用来设置服务器认证的用户名和密码

    -v 参数输出通信的整个过程,用于调试

    --trace 参数也可以用于调试,还会输出原始的二进制数据

    -x 参数指定 HTTP 请求的代理

    -X 参数指定 HTTP 请求的方法

      命令详解有很多,确实难以记住,网上一搜也大把资料,所以不多介绍了,需要用到的时候去查即可。我们需要知道的是应用场景方案

    三、应用场景

    1、应服务器安全限制,我们可以反过来让服务器去请求应用

      今天遇到个需求,linux 上将 txt 文件导入数据库,需要监测 txt 中的数据是否完全导入了数据库,即 txt 中的行数是否和数据库中的行数是否一致的问题。

      问题是获取 txt 行数需要执行 linux 指令,需要 java 代码知道 IP 端口 用户名 密码;线上安全问题,根本不允许java应用有这么大的权限。

      经过指点,可以反过来,让 linux 上使用指令调用我的 java 应用即可,即使用 curl 指令调用java接口。

      参考文章:linux通过curl方式调用接口  ——  https://blog.csdn.net/h2604396739/article/details/83856711

      评论:虽然不知道作者具体需求,但是这种反向思维的考虑,确实是值得学习了解的一种解决方案。

  • 相关阅读:
    [Ljava.lang.String; cannot be cast to java.lang.String 报错的原因
    ajaxfileupload多文件上传
    如何设置 html 中 select 标签不可编辑、只读
    docker
    nvm use 指定版本后无效 win7
    win7禁用Adnimistrator账号登录
    win10安装tomcat9
    webstorm命令行无法使用node-gyp进行编译
    tomcat7.0安装笔记
    win10 java1.7安装笔记
  • 原文地址:https://www.cnblogs.com/goloving/p/15031307.html
Copyright © 2011-2022 走看看