首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从api访问JSON文件有困难-接收403错误(但从另一台服务器工作)

从api访问JSON文件有困难-接收403错误(但从另一台服务器工作)
EN

Stack Overflow用户
提问于 2019-04-17 00:23:17
回答 1查看 67关注 0票数 0

当访问https://api.weather.gov/products/fead3465-2e6f-4350-ae90-15aaa61b91ff以检索JSON字符串时,我收到一个(403):禁止的错误。使用另一个URL (http://mesonet.agron.iastate.edu/json/nwstext_search.py?sts=2019-04-15T00:00Z&ets=2019-04-18T00:00Z&awipsid=PNSBOX)可以成功地使用相同的代码,但是,该URL没有api.weather.gov那么健壮。

我不确定是否需要模拟浏览器凭据才能从api访问此JSON。我正在使用Windows Powershell 2.0编写代码(不幸的是,无法升级)。

代码语言:javascript
复制
$url = "https://api.weather.gov/products/fead3465-2e6f-4350-ae90-15aaa61b91ff"  
$WebRequest = [System.Net.WebRequest]::Create($url)
$WebRequest.Method = "GET"
$WebRequest.ContentType = "application/json"
$WebRequest.UseDefaultCredentials = $true
$Response = $WebRequest.GetResponse()
$ResponseStream = $Response.GetResponseStream()
$ReadStream = New-Object System.IO.StreamReader $ResponseStream
$data = $ReadStream.ReadToEnd()

[System.Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions")
$ser = New-Object System.Web.Script.Serialization.JavaScriptSerializer
$json = $ser.DeserializeObject($data)
echo $json

期望看到JSON,但得到一个(403):禁止的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-17 02:43:16

看着FAQ for this api,我看到他们提到了UserAgent。如果我指定了另一个UserAgent,我可以让它为我运行。我会审查他们对API的许可,以确保这是访问此API的有效/合法方式,以确保您不会违反他们的使用条款进行访问。

代码语言:javascript
复制
$url = "https://api.weather.gov/products/fead3465-2e6f-4350-ae90-15aaa61b91ff"  
$WebRequest = [System.Net.WebRequest]::Create($url)
$WebRequest.Method = "GET"
$WebRequest.ContentType = "application/json"
$WebRequest.UserAgent = 'Mozilla/5.0 (Windows NT; Windows NT 6.1; en-US) AppleWebKit/534.6 (KHTML, like Gecko) Chrome/7.0.500.0 Safari/534.6'
$Response = $WebRequest.GetResponse()
$ResponseStream = $Response.GetResponseStream()
$ReadStream = New-Object System.IO.StreamReader $ResponseStream
$data = $ReadStream.ReadToEnd()

[System.Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions")
$ser = New-Object System.Web.Script.Serialization.JavaScriptSerializer
$json = $ser.DeserializeObject($data)
echo $json
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55712664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档