对 Steam 市场的 GET 请求出错
Posted
技术标签:
【中文标题】对 Steam 市场的 GET 请求出错【英文标题】:Error on GET request to steam market 【发布时间】:2015-08-18 11:44:42 【问题描述】:我正在尝试执行 GET 请求以获取 Steam 市场上单个商品的商品价格信息。
这是我正在使用的确切 angularJS 脚本:
<script>
var app = angular.module('csgo', []);
app.controller('MainCtrl', function($scope, $http)
$http.jsonp("http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=StatTrak%E2%84%A2%20P250%20%7C%20Steel%20Disruption%20%28Factory%20New%29").success(function(response)
$scope.values = response;
console.log(response);
);
);
</script>
当我尝试在浏览器中执行此操作时,我得到:
Uncaught SyntaxError: Unexpected token : ?currency=3&appid=730&market_hash_name=StatTrak™ P250 | Steel Disruption (Factory New):1
在我的 chrome 浏览器控制台中。然后我单击错误消息中的链接 (?currency=3&appid=730&market_hash_name=StatTrak™ P250 | Steel Disruption (Factory New):1)
它把我带到了一行:
"success":true,"lowest_price":"1,09€ ","volume":"348","median_price":"1,01€ "
所以我实际上得到了信息,但它给出了一个错误并用红色强调了 JSON 响应。有人知道这个问题吗?
我正在使用 nodejs、express 和 angular。
编辑:
我尝试了不同的网址:https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Super%20Hero
它适用于这个 URL。所以我不确定为什么我试图请求的原始 URL 不起作用。有什么想法吗?
【问题讨论】:
@Huey 感谢您的回复。我尝试删除“/”,但它仍然给了我错误:/ 【参考方案1】:当您使用JSONP
时,它应该调用JSON_CALLBACK()
来处理结果。更多信息可以参考Angular JSONP document,它还提供了live demoJSON_CALLBACK
的使用方法。
所以在你的情况下,你应该像下面这样调用
$http.jsonp("http://steamcommunity.com/market/priceoverview/?callback=JSON_CALLBACK¤cy=3&appid=730&market_hash_name=StatTrak%E2%84%A2%20P250%20%7C%20Steel%20Disruption%20%28Factory%20New%29").success(function(response)
$scope.values = response;
console.log(response);
);
如果您的服务器正确处理JSON_CALLBACK
,则所有错误都应该消失。
更新
我只是查看Steam Community
缺乏对 JSONP 协议和 API 的支持 可接受的使用策略要求不共享 API 密钥。 如前所述,在 javascript 文件(即 由客户以完整源代码下载)将违反政策 Valve提供的
他们不支持JSONP
,也不支持CORS
。看来您可以从 Angular 访问 steam api。
【讨论】:
嘿@Rebornix - 感谢您的回答。我将我的 $http.jsonp 行更改为您所拥有的,但仍然出现错误。我想我需要做的还不止这些。当您说“如果您的服务器正确处理 JSON_CALLBACK”时,这是什么意思?我需要在其他地方改变一些东西吗?抱歉,我对此很陌生。 @httpNick 你正在使用nodejs,我想你需要在你的节点代码中返回json响应为res.jsonp(obj)
。
是的,我是。那条线应该放在哪里?我有一个“server.js”文件,我猜我有这个文件,但不确定我会在哪里放置该行。
抱歉打错了,你调用的是steam的api,所以和你的node代码无关。请查看我的更新,您似乎无法在 Angular 中访问 Steam api,您必须从节点调用 api。
非常感谢。现在我只需要弄清楚哈哈。以上是关于对 Steam 市场的 GET 请求出错的主要内容,如果未能解决你的问题,请参考以下文章
买steam余额的风险,和N种被红锁的情况(买余额是指市场转余额,非充值卡)
使用 PHP 和 Regex 在 Steam 社区市场上获取物品的价格