热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

如何向Julia中的特定URL发出请求?

如何解决《如何向Julia中的特定URL发出请求?》经验,为你挑选了1个好方法。

我正在尝试访问Julia中以下URL的数据。当我转到“ https://api.stackexchange.com/2.2/questions?order=desc&sort=activity&tagged=Julia&site=stackoverflow ” 时,我可以看到似乎是JSON对象的内容。但是,当我尝试在r下面打印结果时,它会给我一个无法正确渲染的文本,或者如果JSON.print显示的话,会显示一堆随机数。

如何使用Julia获得在浏览器中看到的相同内容(最好以文本形式)。

r = HTTP.request("GET", "https://api.stackexchange.com/2.2/questions?order=desc&sort=activity&tagged=Julia&site=stackoverflow"; verbose=3)

fredrikekre.. 7

响应主体使用压缩gzip,如您在Content-Encoding标头中所见:

julia> using HTTP

julia> r = HTTP.request("GET", "https://api.stackexchange.com/2.2/questions?order=desc&sort=activity&tagged=Julia&site=stackoverflow")
HTTP.Messages.Response:
"""
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip                          <----
[...]

所以你必须用例如解压缩它CodecZlib

julia> using CodecZlib

julia> compressed = HTTP.payload(r);

julia> decompressed = transcode(GzipDecompressor, compressed);

在这里,您可以创建一个String(例如String(decompressed))或使用例如JSON包对其进行解析:

julia> using JSON

julia> json = JSON.parse(IOBuffer(decompressed))
Dict{String,Any} with 4 entries:
  "items"           => Any[Dict{String,Any}("link"=>"/sf/ask/17360801/","view_count"=>5,"creation_date"=…
  "quota_max"       => 300
  "quota_remaining" => 297
  "has_more"        => true

(另请参阅https://github.com/JuliaWeb/HTTP.jl/issues/256)



1> fredrikekre..:

响应主体使用压缩gzip,如您在Content-Encoding标头中所见:

julia> using HTTP

julia> r = HTTP.request("GET", "https://api.stackexchange.com/2.2/questions?order=desc&sort=activity&tagged=Julia&site=stackoverflow")
HTTP.Messages.Response:
"""
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip                          <----
[...]

所以你必须用例如解压缩它CodecZlib

julia> using CodecZlib

julia> compressed = HTTP.payload(r);

julia> decompressed = transcode(GzipDecompressor, compressed);

在这里,您可以创建一个String(例如String(decompressed))或使用例如JSON包对其进行解析:

julia> using JSON

julia> json = JSON.parse(IOBuffer(decompressed))
Dict{String,Any} with 4 entries:
  "items"           => Any[Dict{String,Any}("link"=>"/sf/ask/17360801/","view_count"=>5,"creation_date"=…
  "quota_max"       => 300
  "quota_remaining" => 297
  "has_more"        => true

(另请参阅https://github.com/JuliaWeb/HTTP.jl/issues/256)


如果您不想输出详细信息,请不要使用详细信息。
推荐阅读
author-avatar
天空的鸟儿飞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有