【发布时间】:2016-02-28 17:09:50
【问题描述】:
我正在尝试从 url 获取一个 json 对象:
http://www.alfanous.org/jos2?action=search&unit=aya&fuzzy=True&query=حم
但是,当我使用那个 url 运行我的代码时,我得到了一个空的 json,当我从浏览器请求 url 时,josn 被填充了。
我的代码有什么问题?
URL url = new URL("http://www.alfanous.org/jos2?action=search&unit=aya&fuzzy=True&query=حم");
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
Scanner scan = new Scanner(is);
while (scan.hasNextLine()) {
System.out.println(scan.nextLine());
}
我也试过了
// Create URL object
URL obj = new URL("http://www.alfanous.org/jos2?action=search&unit=aya&fuzzy=True&query=حم");
// Communicate with the URL by HTTP
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// optional default is GET
con.setRequestMethod("GET");
// add request header
con.setRequestProperty("User-Agent", "Mozilla/5.0");
// Getting response data
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
【问题讨论】:
-
你有什么错误吗?
-
尝试使用数据包嗅探器比较浏览器和应用程序的 http 请求(尤其是标头)。根据发送请求的应用程序,服务器的行为似乎有所不同。
-
尝试为 url 编码查询参数值。
-
你是对的,这就是问题所在,JAVA将查询转换为服务器无法识别的某种编码,当我转换它时,服务器识别它。非常感谢