繁体   English   中英

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

[英]Http request returning different response in browser

我从服务器获取一个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是一个String,我将字符串内容复制到我的浏览器中进行测试。

字符串是:

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

响应回复为“成功”:两者都是真的,但返回的对象存在差异。 我对http不太了解,可能是什么导致了这个?

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

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

似乎是造成了这个问题。

在设置服务器的URL时,请确保正确编码URL请求。 空间,牙箍和冒号都需要适当地逃脱。 空格应为%20等。这可能会有所帮助: HTTP中的URL URL地址编码


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

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

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

暂无
暂无

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

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