- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试发出 HTTP 请求以从网站获取数据。为此,我必须使用自定义 header 。当我向 Postman 发出请求时,通过添加自定义 header ,一切正常。当我删除自定义 header 时,我收到此错误消息:{"error": "content not found"}
,这是正常的。
我试图在 Rails 中提出相同的请求。这是我的代码:
uri = URI.parse("https://www.itqi.com/api/master-descriptor")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
req = Net::HTTP::Get.new(uri.path)
req["itqi-key"] = '************************'
response = http.request(req)
在本例中,我添加了自定义 header 。但尽管如此,我还是没有得到任何数据,只有这条错误消息:{"error": "content not found"}
,就像我的自定义 header 没有被考虑在内一样。我尝试了很多可能性都没有成功。
有没有人可以帮助我?我的想法用完了。
提前感谢您的建议。
最好的问候,
编辑
这是我对 Faraday 的 https 请求:
conn = Faraday.new(:url => 'https://www.itqi.com', :ssl => {:verify => false})
response = conn.get do |req|
req.url '/api/master-descriptor'
req.headers['Content-Type'] = 'application/json'
req.headers['itqi-key'] = '********************'
end
这是服务器响应:
RESPONSE: #https://www.itqi.com/api/master-descriptor> @request=# @request_headers={"User-Agent"=>"Faraday v0.12.2", "Content-Type"=>"application/json", "itqi-key"=>"**********************"} @ssl=# @response=# @response_headers={"date"=>"Wed, 13 Dec 2017 08:25:53 GMT", "server"=>"Apache/2.4.10 (Debian)", "content-length"=>"29", "connection"=>"close", "content-type"=>"application/json; charset=UTF-8"} @status=404 @reason_phrase="Not Found">>
总是一样的问题:(
************************ 解决方案 ********************** ****
经过一些研究,似乎标题键在 Rails 中区分大小写。所以,为了解决这个问题,我不得不强制 Rails 将它们变成小写。如果没有这些,Rails 会系统地将它们资本化。
这是我的解决方案:
conn = Faraday.new(url: 'https://www.itqi.com', ssl: {verify: false}) do |conn|
conn.request :json
conn.response :json, :content_type => /\bjson$/
conn.adapter Faraday.default_adapter
end
response = conn.get do |req|
req.url '/api/master-descriptor'
itqi_key = CaseSensitiveString.new('itqi-key')
req.headers[itqi_key] = '************************'
end
class CaseSensitiveString < String
def downcase
self
end
def capitalize
self
end
def to_s
self
end
end
最佳答案
您的代码看起来不像 http://ruby-doc.org/stdlib-2.0.0/libdoc/net/http/rdoc/Net/HTTP.html#label-Setting+Headers 上的示例.
但我建议您改用法拉第 (https://github.com/lostisland/faraday) 会更快乐。
关于ruby-on-rails - HTTP 请求适用于 Postman 但不适用于 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47717221/
我在 postman 的预请求脚本中有以下代码——它给了我当前日期。我宁愿想要昨天的日期(current_timestamp - 1 天)。 var current_timestamp = new D
Postman Pro 可以向多个 Free Postman 用户共享无限制的请求吗? 我正在考虑设置一个 Pro 帐户作为中央请求收集存储,然后 Free Postman 用户只需克隆/读取它即可。
有可能在 postman 内部使用数组变量吗? 例如在请求正文中: { "myData" : {{arrayVariable}} } 在数据文件中: { "arrayVariable"
我有一个 postman 集合,我想将一组三个 API 调用链接在一起,并使用 runner 函数提供数据文件。可以说他们是:/prepareUpload/upload/confirmUpload并且
如何从另一个 GET API 的预请求脚本选项卡调用 POST API 请求(登录 API 具有带用户名和密码字段的请求正文),该 API 在其请求 url 中使用来自上述 API 正文的 token
当前,可以从global和environment范围以及预请求脚本中的通用variable设置和获取变量。但是,文档尚不清楚,是否可以通过编程方式设置collection作用域变量。 例如 pm.en
我正在使用 postman (v7.7.3),当我上传文件以将正文作为表单数据发送时,我收到了以下警告。 “此文件不在您的工作目录中。与您共享此请求的队友将无法使用此文件。为了使协作更容易,您可以在“
standalone Postman client在哪里?对于 Windows,离线工作时保存集合吗? 为了澄清,我想找到禁用在线同步时 Postman 默认保存集合文件的位置。我不试图 export
我之前使用过 Postman Chrome 扩展以及 Postman Interceptor Extension在 Postman 中捕获 Chrome 发出的 HTTP 请求。 但是,现在 Post
在 Postman 中单击保存的请求后,我得到的 View 如下所示: 要查看正文,我需要单击“正文”。 这不是什么大问题,除非我要处理 20 个左右的请求,并在每个请求的正文中查找特定的内容,如果能
我正在查看 Postman 快捷方式面板,但没有看到在请求正文中注释部分代码的快捷方式,复制和粘贴非常烦人 发表评论。 最佳答案 根据快捷方式面板Ctrl +/打开快捷方式面板但我不小心在请求正文中这
是否可以在我的 postman 测试用例中访问响应大小的值? 虽然我能够看到响应大小以及状态代码和响应时间(我可以在使用responseCode.code和responseTime的测试用例中使用这两
我正在尝试使用 Windows native Postman 应用程序 (V4.8.0) 将简单的 Get 命令发布到我在本地主机上运行的服务,但它们失败了。 postman 控制台显示 Error:
Newman 帮助指定集合、环境和全局变量可以作为路径或 URL 传递。我可以看到如何从 Postman 获取收藏 URL(通过转到“共享”>“收藏链接”)。 如何在 Postman 中获取 Envi
我们正在扩展到一个大型微服务构建,并通过 postman 完成更多测试(现场验证、错误测试等)。好奇...您的团队如何组织大量 API 的集合? (按 API、按测试类型、按发布等)从一个团队传递到另
Postman 对我来说是一个了不起的工具,但我对使用变量有一些疑问。在我的收藏中,我有 4 个选项卡/请求。 首先是获取用于其他三个的 token ( token 在 15 分钟后过期,因此我必须经
由于所有 Postman 集合基本上都是 .json 文件,因此很难通过代码审查工具审查在 Postman 中编写的代码。 目前我继续在GitHub上查看这样的.json文件,但是不太方便。 例如,这
我正在尝试使用 Newman 自动化 postman 测试.授权有问题。授权 bearer token 发生变化并且是动态的。有谁知道如何自动执行此操作? 最佳答案 Postman 有变量这个很好的特
Postman 允许使用 pre-defined variables 生成随机虚拟数据,例如,这个将被随机公司名称替换: {{$randomCompanyName}} 多次使用预定义变量会在每个请
我正在使用一个开放的 API。 但我只使用了 API 提供的响应中的一小部分数据。当我使用具有不同参数的 API 进行测试以查看响应时。 我不想每次发送请求时都看到整个 API 响应,我只想看到我感兴
我是一名优秀的程序员,十分优秀!