网络请求工具 cURL

网络请求工具 cURL

2017-08-16

cRUL 是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在
“标准输出”(stdout)上面。

查看网页源码


1

$ curl baidu.com

1

2

3


<html>

<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">

</html>

如果要把这个网页保存下来,可以使用 -o 或 --output 参数,这就相当于使用 wget
命令了。


1

$ curl -o file_name baidu.com

自动跳转

有的网址是自动跳转的。使用-L--location参数,curl就会跳转到新的网址。


1

$ curl -L baidu.com

显示头信息

-i 或 --include 参数可以显示 http response 的头信息,连同网页代码一起。
-I 或 --head 参数则是只显示 http response 的头信息。


1

$ curl -i baidu.com

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


HTTP/1.1 200 OK

Date: Wed, 16 Aug 2017 08:21:49 GMT

Server: Apache

Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT

ETag: "51-47cf7e6ee8400"

Accept-Ranges: bytes

Content-Length: 81

Cache-Control: max-age=86400

Expires: Thu, 17 Aug 2017 08:21:49 GMT

Connection: Keep-Alive

Content-Type: text/html

<html>

<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">

</html>

显示通信过程

-v 或 --verbose 参数可以显示一次 http 通信的整个过程,包括端口连接和
http request 头信息。


1

$ curl -v baidu.com

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24


* Rebuilt URL to: baidu.com/

* Trying 220.181.57.217...

* Connected to baidu.com (220.181.57.217) port 80 (#0)

> GET / HTTP/1.1

> Host: baidu.com

> User-Agent: curl/7.43.0

> Accept: */*

>

< HTTP/1.1 200 OK

< Date: Wed, 16 Aug 2017 08:24:49 GMT

< Server: Apache

< Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT

< ETag: "51-47cf7e6ee8400"

< Accept-Ranges: bytes

< Content-Length: 81

< Cache-Control: max-age=86400

< Expires: Thu, 17 Aug 2017 08:24:49 GMT

< Connection: Keep-Alive

< Content-Type: text/html

<

<html>

<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">

</html>

* Connection #0 to host baidu.com left intact

也可以通过 --trace 或 --trace-ascii 命令查看更详细通信过程,执行后通过制定
的日志地址查看


1

2


$ curl --trace ${log_path} baidu.com

$ curl --trace-ascii ${log_path} baidu.com

HTTP动词

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


1

$ curl -X POST baidu.com

增加头信息


1

2


# 使用-H 或 --header 可以起到这个作用

$ curl localhost:8002/test -H "Content-Type:application/json"

发送表单信息


1

2

3

4

5

6

7

8

9


# GET方法比较简单,网址后直接跟参数

$ curl localhost:8002/test?data=xxx

# POST方法通过--data或-d参数实现

$ curl -X POST localhost:8002/test --data "name=xxx" --data "password=xxx"

$ curl -X POST localhost:8002/test -H "Content-Type:application/x-www-form-urlencoded" -d "name=win"

# 使用application/json 提交json数据

$ curl -X POST localhost:8002/test -H "Content-Type:application/json" -d ‘{"name":"wxnacy"}‘

#如果你的数据没有经过表单编码,还可以让curl为你编码,参数是`--data-urlencode`。

$ curl -X POST localhost:8002/test --data-urlencode "data=1 2"

文件上传


1

2


$ curl --form [email protected] localhost:8002/test

$ curl --form "[email protected];type=text/plain" localhost:8002/test

Referer字段

需要添加request头信息referer标示从哪里跳转来的


1

$ curl localhost:8002/test --referer ${from_url}

user-agent字段

使用 --user-agent 或 -A 可以模拟发送 user-agent 字段


1

$ curl localhost:8002/test --user-agent "device"

cookie


1

2

3

4

5

6


# 发送的cookie可以在response headers中看到

$ curl localhost:8002/test --cookie "name=ss"

# -c 可以保存服务器返回的cookies到文件中

$ curl localhost:8002/test -c ${cookie_file}

# -b 可以使用这个文件作为cookie信息,进行后续的请求。

$ curl localhost:8002/test -b ${cookie_file}

HTTP认证

有些网域需要HTTP认证,这时 cURL 需要用到--user或 -u参数。


1

2


# 这时候服务器会在头信息中接收到Authorization字段,值为Basic + name:pass的base64加密数值

$ curl localhost:8002/test --user name:apss

参考资料

时间: 2024-07-30 21:22:50

网络请求工具 cURL的相关文章

基于Android Volley的网络请求工具

基于Android Volley的网络请求工具. 一.说明 AndroidVolley,Android Volley核心库及扩展工程.AndroidVolleySample,网络请求工具示例工程.Release,jar包.直接下载 二.Volley基本处理流程: 1.应用初始化Volley.2.Volley创建一个RequestQueue.NetworkDispatcher组及Network.3.RequestQueue即一个Request队列,RequestQueue会创建一个Executor

基于AFNetworking封装的网络请求工具类

前提,导入AFNetworking框架 关于修改AFN源码:通常序列化时做对text/plan等的支持时,可以一劳永逸的修改源代码,在acceptableContentTypes中修改即可. GGRequest.h 1 #import <Foundation/Foundation.h> 2 3 @interface GGRequest : NSObject 4 /** 5 * 网络请求方法 6 * 7 * @param url 将要访问的链接 8 * @param param 传入的参数 9

模拟请求工具curl的异常处理

日常开发过程中,使用curl进行模拟请求的场景比较多.当跨站请求时,并不能保证其他网站的稳定性.当其他网站无法顺利访问,会影响到当前的业务系统,且不容易排查问题,因此需要作异常处理 . private function curlPost(string $route, array $postData):array{    try {        //发送消息到任务队列        $url = env('API_URL') . $route;        //初始化        $curl

android网络请求工具类

package com.example.util; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLC

网络请求工具类WebServiceUtils

如果对WebService一无所知的话,建议先看看这两篇博客,对你WebService很有帮助. http://blog.csdn.NET/eyu8874521/article/details/9125987 http://blog.csdn.net/xiaanming/article/details/16871117 本人也是菜鸟一名,WebService已经是很老的技术了,但现在仍有使用,刚开始接触的时候,是无从入手呀,看了上面几篇文章以后,渐渐的会使用了,这里感谢网上开源的作者和文章,网上

Java网络请求工具类(依赖:org.apache.http;注:HttpClient 4.4,HttpCore 4.4)

到此处可以去下载依赖包:http://hc.apache.org/downloads.cgi 1 import java.util.List; 2 3 import org.apache.http.HttpStatus; 4 import org.apache.http.NameValuePair; 5 import org.apache.http.client.config.RequestConfig; 6 import org.apache.http.client.entity.UrlEnc

网络请求的封装

网络封装的原因: 开发者为了开发方便,出现了大量的第三方的网络请求,我们除了在cocoapods中引入第三方的开源,同时还应该注意的一点是:如果第三方的网络请求不更新了(比如ASI),或者网络请求工具类在新版本出现了bug导致暂时无法使用,我们工程中存在大量的网络请求,可能会导致我们工程无法运行,甚至导致工程需要重新走通,为了这种解决这种突发状况的产生,我们需要在网络请求之前,进行简单的封装: 这里我们以AFNetworking为例 HttpTool.h中: #import <Foundatio

网络请求框架---Volley

去年的Google I/O大会为android开发者带来了一个网络请求框架,它的名字叫做Volley.Volley诞生的使命就是让Android的网络请求更快,更健壮,而且它的网络通信的实现是基于HttpURLConnection的.前几天我整理了两个网络请求工具类,应付日常工作的开发需求还是没问题的,自己分别在HttpURLConnection和HttpClient的基础上进行进一层的封装,保证了API的足够简洁友好.有兴趣的同学可以回头去翻翻,源码在Github上,搜索AndroidHttp

Volley网络请求框架简析——Android网络请求框架(三)

题记-- 人来到这个世界上,只有两件事情,生与死, 一件事完了,另一件事还急什么? 有缘而来,无缘而去, 识自本心,见自本性 不起妄缘,无心无为 自由自在,动静自如 冷暖自知,则是修行 1.初始化一个消息请求队列以及网络请求工具类对象 /** * Created by androidlongs on 16/7/1. * 网络请求访问框架 */ public class VollyRequestUtils { /** * Volley框架使用工具类对象 */ private static Voll