java - Http请求在浏览器中返回不同的响应

标签 java android json http

我从服务器获取一个 JSON 对象,当我在浏览器中输入以下生成的 URL 时,我得到一个带有“num_match”的响应:18,但是当在我的应用程序中运行时,我得到一个带有“num_matches”的 JSON 对象:2.

URL对象是这样创建的

URL request;
request = new URL(url);

连接如下:

HttpURLConnection connection = (HttpURLConnection) request.openConnection();
    connection.setConnectTimeout(MAX_TIME);
    connection.setReadTimeout(MAX_TIME);

url 是一个字符串,我将字符串内容复制到浏览器中进行测试。

字符串是:

http://search.3taps.com/?auth_token=xxxxxxxxxxxxxxxxxx&retvals=heading,body,timestamp,external_url,images,price&rpp=100&source=BKPGE|CRAIG|EBAYC|INDEE|KIJIJ&category=PWSM&radius=200mi&lat=26.244&long=-80.2&annotations={age:18 OR age:19 OR age:20 OR age:21 OR age:22}

URL 对象具有以下字段

查询:

auth_token=xxxxxxxxxxxxxxxxxx&retvals=heading,body,timestamp,external_url,images,price&rpp=100&source=BKPGE|CRAIG|EBAYC|INDEE|KIJIJ&category=PWSM&radius=200mi&lat=26.244&long=-80.2&annotations={age:18 OR age:19 OR age:20 OR age:21 OR age:22}

文件:

/?auth_token=xxxxxxxxxxxxxxxxxx&retvals=heading,body,timestamp,external_url,images,price&rpp=100&source=BKPGE|CRAIG|EBAYC|INDEE|KIJIJ&category=PWSM&radius=200mi&lat=26.244&long=-80.2&annotations={age:18 OR age:19 OR age:20 OR age:21 OR age:22}

主持人:

search.3taps.com

两者的响应均返回为“success”:true,但返回的对象存在差异。我对 http 不太了解,这可能是什么原因造成的?

更新:在进一步测试中,似乎只有注释条目存在时才会出现问题

annotations={age:18 OR age:19 OR age:20 OR age:21 OR age:22}

似乎是导致问题的原因。

最佳答案

在设置服务器的 URL 时,请确保正确编码 URL 请求。空格、大括号和冒号都需要适当转义。空格应该是 %20 等。这可能有帮助:HTTP URL Address Encoding in Java

<小时/>

旧答案...评论表明这不会影响结果...所以向下移动。

服务器很可能会根据您所报告的“浏览器”类型来改变其行为。当连接到 HTTP 服务器时,您告诉服务器您的 UserAgent 是什么(通常对于浏览器来说,它类似于“Internet Explorer ....”或“Mozilla ...”或“Google Chome ...”。服务器将通常会定制请求的结果以适应用户代理(不同的 javascript 文件和 HTML 代码转到 IE 等)。这也是服务器将移动设备重新定向到网站的移动友好版本的方式。

服务器很可能正在更改它的响应以匹配 Java 代码公开的 UserAgent(默认类似于“Java/1.7.0”。您可以通过几种方式更改此值。有一个查看这个问题 Setting user agent of a java URLConnection 并尝试使用 Mozilla 代理运行您的程序,看看是否会得到不同的结果。

关于java - Http请求在浏览器中返回不同的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18434753/

相关文章:

python - 将多个 json 文件中的选择字段保存到新的 json

ios - PSCollectionView 调用委托(delegate)

java - 在 javamail 中设置 "mail.strictly_mime.parm_folding"

java - 在 Java 中获取输入

java - 在textView中登录后显示sqlite数据库中的用户名

android - 列出 Google Play 游戏服务中的所有排行榜

jquery - 按按钮扩展过滤行

java - 相互SSL-以正确的格式获取 key /信任库

java - 使用插入排序、选择排序和归并排序进行排序

java - 如何将位图重新缩放到不同的屏幕尺寸但保持正方形?