Java HTTP请求未返回所需的json
我试图向一个网站发送一个http请求,该网站应该返回json响应。问题是我没有得到json数据。但是当我在浏览器中粘贴url时,它会显示json输出。我是个新手。请帮忙 这是我的密码Java HTTP请求未返回所需的json,java,json,http,httpclient,Java,Json,Http,Httpclient,我试图向一个网站发送一个http请求,该网站应该返回json响应。问题是我没有得到json数据。但是当我在浏览器中粘贴url时,它会显示json输出。我是个新手。请帮忙 这是我的密码 HttpClient client = new DefaultHttpClient(); String url="http://directclientvendors.com/news24/api/get.php?type=news"; HttpGet request = new HttpGet(url); Htt
HttpClient client = new DefaultHttpClient();
String url="http://directclientvendors.com/news24/api/get.php?type=news";
HttpGet request = new HttpGet(url);
HttpResponse response;
response = client.execute(request);
BufferedReader br =
new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line = "";
while(br.ready())
{
line+=br.readLine();
}
System.out.println("line "+line);
您应该执行
GET
请求,而不是POST
。请将请求类型更改为HttpGet
。当您将其粘贴到地址栏上并按enter键时,浏览器将在上执行GET
另外,使用Reader+StringBuilder/JsonReader/GSON读取URL的响应内容。字符串连接会导致不必要地创建其他对象
[编辑]
令我惊讶的是,API调用即使在进行POST
调用以获取资源时仍然有效。问题一定出在您的解析逻辑中。使用JsonReader
对我来说很好。这只是模板代码,但您可以填充其余部分以获得其他JSON元素。无论POST
是否有效,您仍应使用GET
进行此调用
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://directclientvendors.com/news24/api/get.php?type=news");
HttpResponse response = client.execute(request);
InputStream content = response.getEntity().getContent();
JsonReader jsonReader = new JsonReader(new InputStreamReader(content, "UTF-8"));
jsonReader.beginObject();
if(jsonReader.hasNext())
{
System.out.println(jsonReader.nextName()); // prints 'news'
// BEGIN_ARRAY etc to parse the rest
}
// END_OBJECT and cleanup
您应该执行
GET
请求,而不是POST
。请将请求类型更改为HttpGet
。当您将其粘贴到地址栏上并按enter键时,浏览器将在上执行GET
另外,使用Reader+StringBuilder/JsonReader/GSON读取URL的响应内容。字符串连接会导致不必要地创建其他对象
[编辑]
令我惊讶的是,API调用即使在进行POST
调用以获取资源时仍然有效。问题一定出在您的解析逻辑中。使用JsonReader
对我来说很好。这只是模板代码,但您可以填充其余部分以获得其他JSON元素。无论POST
是否有效,您仍应使用GET
进行此调用
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://directclientvendors.com/news24/api/get.php?type=news");
HttpResponse response = client.execute(request);
InputStream content = response.getEntity().getContent();
JsonReader jsonReader = new JsonReader(new InputStreamReader(content, "UTF-8"));
jsonReader.beginObject();
if(jsonReader.hasNext())
{
System.out.println(jsonReader.nextName()); // prints 'news'
// BEGIN_ARRAY etc to parse the rest
}
// END_OBJECT and cleanup
输出是什么?输出:行。它甚至不进入while循环。它的输出是什么?输出:行。它甚至没有进入while循环。