Ruby的全新。我引用了Curb文档并尝试使用安全令牌在curl中提交请求。以下是传统请求中标题的3个部分:
如何构建Curb以提交姓名,值和评论,如上所示?
我从以下开始:
c = Curl::Easy.new("http://website.com") do |curl|
curl.headers["Name"] = "My-Security-Token"
curl.headers["Value"] = "1234567890"
curl.headers["Comment"] = "website.com"
curl.verbose = true
end
c.perform
答案 0 :(得分:1)
以下是我传统请求的标题的3个部分
- 我-安全令牌
- 1234567890
- website.com
醇>
标题包含名称/值对,因此您的描述没有任何意义。
看起来您的标题名称应为:
My-Security-Token
它的价值应该是:
1234567890
要制作GET request
(您没有提及您正在制作的请求类型)并指定该标题,您可以执行以下操作:
require 'curb'
http = Curl.get("http://website.com/") do |http|
http.headers["My-Security-Token"] = "1234567890"
end
puts http.body_str[0..249] #Output the first 250 characters of the response
如果您想使用详细模式,它将显示实际的请求和响应,您可以这样做:
require 'curb'
c = Curl::Easy.new("http://www.google.com/") do |curl|
curl.headers["My-Security-Token"] = "1234567890"
curl.verbose = true
end
c.perform #Outputs the request and the response
puts c.body_str[0..249] #body_str => the body of the response
输出:
* About to connect() to www.google.com port 80 (#0)
* Trying 74.125.28.147... * Connected to www.google.com (74.125.28.147) port 80 (#0)
> GET / HTTP/1.1
Host: www.google.com
Accept: */*
My-Security-Token: 1234567890 #***HERE IS YOUR CUSTOM HEADER****
< HTTP/1.1 200 OK
< Date: Tue, 03 Mar 2015 00:14:42 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
< Set-Cookie: PREF=ID=479a8fa626097193:FF=0:TM=1425341682:LM=1425341682:S=5kflGPOAzEx-uMWb; expires=Thu, 02-Mar-2017 00:14:42 GMT; path=/; domain=.google.com
< Set-Cookie: NID=67=Eim3D__PFGbpSWdcIH9IPhkuDEVMFjN4ShU9gA6Z_rMryMoI6nv--sIjk_E00_EpMfSe3RkPO5dYjV7yGTXT3oMLX-t7FsrKSJmF7-OffAuLKrr5KfV1IZzL9yaJQKiB; expires=Wed, 02-Sep-2015 00:14:42 GMT; path=/; domain=.google.com; HttpOnly
< P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
< Server: gws
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< Alternate-Protocol: 80:quic,p=0.08
< Accept-Ranges: none
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
<
* Expire cleared
* Connection #0 to host www.google.com left intact
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content="Search the world's information, including webpages, images, videos and more. Google has many specia
如果您确实希望自定义标头为:
Name: My-Security-Token
Value: 1234567890
Comment: website.com
...然后你可以这样做:
require 'curb'
c = Curl::Easy.new("http://www.google.com/") do |curl|
curl.headers["Name"] = "My-Security-Token"
curl.headers["Value"] = "1234567890"
curl.headers["Comment"] = "website.com"
curl.verbose = true
end
c.perform
puts c.body_str[0..249]
...将生成如下输出:
* About to connect() to www.google.com port 80 (#0)
* Trying 74.125.28.105... * Connected to www.google.com (74.125.28.105) port 80 (#0)
> GET / HTTP/1.1
Host: www.google.com
Accept: */*
Name: My-Security-Token #HERE ARE YOUR HEADERS
Value: 1234567890 #HERE
Comment: website.com #HERE
...
...
如果上面没有任何内容符合您的要求,那么如何发布您的实际&#34;传统&#34;请求?如果您不知道如何操作,请搜索谷歌。
答案 1 :(得分:0)
如何构建Curb以提交姓名,值和评论,如上所示?
第二个想法,看起来Name,Value和Comment是单个http头的组件:
通过围绕着,可以在一些HTTP头字段中包含注释 带括号的注释文本。评论仅允许在 包含“注释”的字段作为其字段值定义的一部分 在所有其他字段中,括号被视为字段的一部分 值。
如果是这种情况,您可以像这样创建自定义标题:
require 'curb'
c = Curl::Easy.new("http://www.google.com/") do |curl|
curl.headers["My-Security-Token"] = "1234567890 (website.com)"
curl.verbose = true
end
c.perform #Outputs the request and the response
puts c.body_str[0..249] #body_str => the body of the response
--output:--
* About to connect() to www.google.com port 80 (#0)
* Trying 74.125.28.104... * Connected to www.google.com (74.125.28.104) port 80 (#0)
> GET / HTTP/1.1
Host: www.google.com
Accept: */*
My-Security-Token: 1234567890 (website.com) #***YOUR CUSTOM HEADER****
...
...