繁体   English   中英

Java HttpClient从Post方法获取响应

[英]Java HttpClient get response from Post method

我是HttpClient的新手,正在尝试获取FIFA Ultimate Team Web应用程序中球员的价格。

使用开发人员工具,我设法找到了产生播放器价格的发布方法。

搜索特定播放器会发出以下URL请求。 https://utas.s2.fut.ea.com/ut/game/fifa15/transfermarket?maskedDefId=20801&start=0&num=16&type=player

当我查看该方法的响应时,可以在Developer Tools中看到当前市场上的所有播放器价格。

因此,我尝试使用Java对其进行编码以获取这些价格,但我的输出与开发人员工具中给出的响应完全不同。

这是我的代码:

 HttpClient client = new DefaultHttpClient(); String url = "https://utas.s2.fut.ea.com/ut/game/fifa15/transfermarket?maskedDefId=20801&start=0&num=16&type=player"; HttpPost loginPost = new HttpPost(url); loginPost.setHeader("Host", "utas.s2.fut.ea.com"); loginPost.setHeader("Connection", "keep-alive"); loginPost.setHeader("Content-Lenght", "1"); loginPost.setHeader("Cache-Control", "max-age=0"); loginPost.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); loginPost.setHeader("Origin", "https://www.easports.com"); loginPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36"); loginPost.setHeader("Content-Type", "application/json"); loginPost.setHeader("Accept", "application/json"); loginPost.setHeader("X-UT-SID", "23c19a93-32ac-4f52-9aab-21c6be112ede"); loginPost.setHeader("X-UT-Embed-Error", "true"); loginPost.setHeader("X-UT-PHISHING-TOKEN", "8649502695209937021"); loginPost.setHeader("X-HTTP-Method-Override", "GET"); loginPost.setHeader("Referer", "https://www.easports.com/iframe/fut15/bundles/futweb/web/flash/FifaUltimateTeam.swf?cl=144469"); loginPost.setHeader("Accept-Encoding", "gzip,deflate"); loginPost.setHeader("Accept-Language", "nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4"); loginPost.setHeader("Cookie", "CEM-Rememberlogin=mRLLf4Ua9QJAz1J1va8yrhwlh9jFEaLsccY1Q3Ja7wREWecJnF3H348jrRpTnr3qXnhX-YKV6TH3HWgEPqgExDUP2vMFeiwkAYSkhyMuJUyHF_Fsou-fiv7Ur2XVYpqVo1KEP_dO0lLaJ5zTV1I8paWera57lPKmWxY5KzOdnRTGBbpbBv2bJOVPlGLpUFWmbOdMxElcTQga7S2-nM3icZc0JQQ2gmtDCKJ48VHSTl3x3BEuT3ltfNvFEt8elFIf; Path=/"); List <NameValuePair> nvps = new ArrayList <NameValuePair>(); nvps.add(new BasicNameValuePair("maskedDefId", "20801")); nvps.add(new BasicNameValuePair("num", "16")); nvps.add(new BasicNameValuePair("start", "0")); nvps.add(new BasicNameValuePair("type", "player")); loginPost.setEntity(new UrlEncodedFormEntity(nvps)); HttpResponse response = client.execute(loginPost); HttpEntity entity = response.getEntity(); String content = EntityUtils.toString(entity); System.out.println(content); 

这是开发人员工具显示的响应以及我需要的内容:

{"auctionInfo":[{"itemData":{"id":164674417976,"timestamp":1412181858,"itemType":"player","pile":5,"resourceId":1929400641,"rating":93,"leagueId":0, etc}]}}

这是我的回答: ?[][][][][][][][]?V?M-.NLOU??+???Q*JM,??S?RJ?(?,JMQ([]?[]G[]Et???S??L[][]k[]??[]?6[][][]其中[]代表未知字符(正方形)

所以我的问题是:如何调整代码,以便获得请求的URL的响应? 任何帮助,将不胜感激

编辑:我要做的就是删除一些“设置”标头:这些是我仍然需要的“设置”标头:

loginPost.setHeader("Host", "utas.s2.fut.ea.com"); loginPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36"); loginPost.setHeader("X-UT-SID", "23c19a93-32ac-4f52-9aab-21c6be112ede"); loginPost.setHeader("X-UT-Embed-Error", "true"); loginPost.setHeader("X-UT-PHISHING-TOKEN", "8649502695209937021"); loginPost.setHeader("X-HTTP-Method-Override", "GET");

但是在这里,“ X-UT-SID”和“ X-UT-PHISHING-TOKEN”的值不正确,它们不是实际值(因为我从上一个会话中复制了它们)。 我应该如何修正我的代码以获得实际值?

提前致谢

有文件吗? 也许您必须手动设置编码,例如:

loginPost.setHeader("Content-Type", "application/json; charset=utf-8");

也许用其他字符集更改“ utf-8”(例如“ iso-8859-1”)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM