Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过cURL调用使用HTTP请求发送头?_Curl_Http Headers - Fatal编程技术网

如何通过cURL调用使用HTTP请求发送头?

如何通过cURL调用使用HTTP请求发送头?,curl,http-headers,Curl,Http Headers,我希望在Linux机器上向Apache服务器发送一个头。如何通过cURL调用实现这一点?: 您可以通过添加-v选项查看curl发送的请求。使用 手册页:在PHP中: 或者,您可以设置多个: curl_setopt($ch, CURLOPT_HTTPHEADER, array('HeaderName:HeaderValue', 'HeaderName2:HeaderValue2')); 获取: 使用JSON: 使用XML: 帖子: 有关过帐数据: 对于文件上载: RESTful HTTP Pos

我希望在Linux机器上向Apache服务器发送一个头。如何通过cURL调用实现这一点?

您可以通过添加
-v
选项查看curl发送的请求。

使用

手册页:

在PHP中:

或者,您可以设置多个:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('HeaderName:HeaderValue', 'HeaderName2:HeaderValue2'));
获取:

使用JSON:

使用XML:

帖子:

有关过帐数据:

对于文件上载:

RESTful HTTP Post:

用于登录到站点(身份验证):


我已经从卷曲变成了;语法如下所示:

http http://myurl HeaderName:value
获取(多个参数):


如果您想发送您的自定义标题,您可以这样做:

curl -v -H @{'custom_header'='custom_header_value'} http://localhost:3000/action?result1=gh&result2=ghk

您还可以将多个标头、数据(例如JSON)和指定的调用方法(POST、GET)发送到单个CUrl调用中,如下所示:

curl -X POST(Get or whatever) \
  http://your_url.com/api/endpoint \
  -H 'Content-Type: application/json' \
  -H 'header-element1: header-data1' \
  -H 'header-element2: header-data2' \
……更多标题

  -d '{
  "JsonExArray": [
    {
      "json_prop": "1",
    },
    {
      "json_prop": "2",
    }
  ]
}'
我用邮递员

执行你想做的任何调用。然后,postman提供了一个方便的工具来显示curl代码

在终端运行它。


anaconda环境中,通过窗口执行的命令应为: 获得,例如:

curl.exe http://127.0.0.1:5000/books 
发布或修补ex的数据:

curl.exe http://127.0.0.1:5000/books/8 -X PATCH -H "Content-Type: application/json" -d '{\"rating\":\"2\"}' 
PS:为json数据添加反斜杠以避免此类错误=>
未能解码json对象:期望值:第1行第1列(字符0)

并使用
curl.exe
而不是
curl
来避免此问题:

Invoke-WebRequest : Cannot bind parameter 'Headers'. Cannot convert the "Content-Type: application/json" value of type
"System.String" to type "System.Collections.IDictionary".
At line:1 char:48
+ ... 0.1:5000/books/8 -X PATCH -H "Content-Type: application/json" -d '{\" ...
+                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.InvokeWebRequestCommand


-H选项可以在命令提示符中使用,如:curl-H“pwd:123”谢谢。简短、简洁,并包含文档链接。然而,这个链接已经过时了,现在的新链接是@James,它在某些情况下可以正常工作,但在其他情况下CURL会发送一个额外的标题“Expect:100 continue”-知道如何删除它吗?@coding\u idiot:你可以在标题值数组中传递“Expect:”来禁用它。例如:curl_setopt($ch,CURLOPT_HTTPHEADER,array('HeaderName:HeaderValue','Expect:');OP并没有提到任何关于PHP的内容,尽管名称是用下划线大写的,而HTTP_u是前缀。例如,“protection token”变成了“HTTP_protection_token”。@hanshenrik这是真的,但是OP也没有提到任何关于命令行的内容。事实上,这个问题本来应该因为不清楚而搁置。今天,一个新手不会因为这样一个草率的问题而逍遥法外。如果你想发送多个标题,请使用多个--header,没关系,curl会将每个标题解析为不同的标题。无法在同一--header参数内分隔头。示例:curl--header“Accept:javascript”-header“test:hello”-v www.google.com如果有人想要示例,我就把这个放在这里:手册页(至少在OSX上)现在确实包含了一个示例:示例:#curl-H“X-First-Name:Joe”@MartinKonicek和其他:我强烈推荐tldr实用程序(brew等安装tldr)。这是唯一的例子。例如“-使用自定义HTTP方法发送带有额外标头的请求:curl-H'X-My-header:123'-X PUT”这篇文章应该是可以接受的答案。目前被接受的答案,无论多么正确,都只是隐式地回答了OPs问题。下载最新版本的Postman,在用户界面级别(post、put、get..例如,带有标题和json正文)根据需要进行任何http请求配置,然后单击“生成代码”并选择“curl”选项。它提供了等效的命令行。RESTful post的@filename是什么意思?您是否正在将文件发布到REST服务器?对于那些晚到的人来说,这似乎有些奇怪,他们可能也在想同样的事情……@表示法是一种从文件读取要发送到服务器的数据的方法,而不是将其内联到curl请求中。您不发布文件本身,而是将文件内容作为发布请求的主体发布。更详细的回答如下:)如果我正确理解标题的用法: header
Accept
是为希望拥有此功能的客户端(请求/请求)而设计的,但是header
Content Type
只不过是服务器的回答而已,这并不是错误地符合客户端的愿望:“我想要此类型的内容”。对吗?因此对于GET
curl-i-H“Accept:application/json”http://hostname/resource
应该是它。我错了吗?请参见«在响应中,一个
内容类型
标题告诉客户返回内容的内容类型是什么。»@andreas.naturwiki,同样不要混淆。在MDN中,«响应中…»表示响应中的
内容类型
。不是请求<代码>内容类型始终指双方之间传输的数据类型。如果它是on-request头,则表示客户机说‘是的,我正在向服务器发送数据类型
application/json
’。如果是响应,则表示服务器向客户端发送“现在我向您发送数据类型
text/plain
”。谢谢。我没有意识到这种url的强制引号。这是一个很好的加速方法,但是如果你在windows上使用shell脚本,请小心避开单引号或双引号,因为shell脚本有自己的格式要求。虽然postman是一个很好的工具,但当你没有Kubernetes pods这样的图形环境时这是无用的。学习curl,您可以随时测试rest。谢谢,这个工具非常有用。这不是尝试从名为
{'custom\u header'='custom\u header\u value'}的文件中读取标题吗?
?这几乎与原始发布的问题无关。@MarkHu它响应的是问题标题,而不是问题正文:)。有很多问题类似于问题标题,所以他们会对我的答案进行adv,我也是其中之一,所以一旦我找到答案,我就分享了它。我想它用在bash中,而不是cmd中。我说得对吗?一定要让我知道,先生。嗨,这是在mac电脑上用zsh测试的(:是的,那就是bash了。
curl -X POST -d @filename http://hostname/resource
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
http http://myurl HeaderName:value
curl -X  GET "http://localhost:3000/action?result1=gh&result2=ghk"
curl --request  GET "http://localhost:3000/action?result1=gh&result2=ghk"
curl  "http://localhost:3000/action?result1=gh&result2=ghk"
curl -i -H "Application/json" -H "Content-type: application/json"  "http://localhost:3000/action?result1=gh&result2=ghk"
curl -v -H @{'custom_header'='custom_header_value'} http://localhost:3000/action?result1=gh&result2=ghk
curl -X POST(Get or whatever) \
  http://your_url.com/api/endpoint \
  -H 'Content-Type: application/json' \
  -H 'header-element1: header-data1' \
  -H 'header-element2: header-data2' \
  -d '{
  "JsonExArray": [
    {
      "json_prop": "1",
    },
    {
      "json_prop": "2",
    }
  ]
}'
curl.exe http://127.0.0.1:5000/books 
curl.exe http://127.0.0.1:5000/books/8 -X PATCH -H "Content-Type: application/json" -d '{\"rating\":\"2\"}' 
Invoke-WebRequest : Cannot bind parameter 'Headers'. Cannot convert the "Content-Type: application/json" value of type
"System.String" to type "System.Collections.IDictionary".
At line:1 char:48
+ ... 0.1:5000/books/8 -X PATCH -H "Content-Type: application/json" -d '{\" ...
+                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.InvokeWebRequestCommand