JAVA:在代码空JSON,在浏览器
问题描述:
充满JSON,我试图从该URL一个JSON对象:JAVA:在代码空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());
答
的解决办法是将它传递给URL
构造函数之前的URL字符串编码。
String urlstring = "http://www.alfanous.org/jos2?action=search&unit=aya&fuzzy=True&query=حم";
URLEncoder.encode(urlstring, "UTF-8");
URL url = new URL(urlstring);
然后继续前面的代码显示在原始文章。
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
Scanner scan = new Scanner(is);
while (scan.hasNextLine()) {
System.out.println(scan.nextLine());
}
道德是..我应该在使用它之前对网址进行编码!
答
尝试使用BufferedReader
这样的:
URL url = new URL("http://www.alfanous.org/jos2?action=search&unit=aya&fuzzy=True&query=حم");
URLConnection conn = url.openConnection();
BufferedReader br =new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((thisLine = br.readLine()) != null) {
System.out.println(thisLine);
}
你有错误吗? – Abdelhak
我没有错误。 –
尝试使用数据包嗅探器比较浏览器和应用程序的http请求(特别是标头)。根据哪个应用程序发送请求,服务器似乎行为不同。 – f1sh