0
我试图使用httpClient(通过apache)发布和获取数据。发布是绝对正确的,我的代码没有问题,但是,我不能说相同的获取数据。从HTTP响应中提取帖子正文
网站,我想从数据是这样的:http://www.posttestserver.com/data/2013/04/16/01.13.04594755373
我只希望接收后的主体(即底部的JSON字符串开头的最近案例),然而,这种方法我我正在使用(以及我在网上找到的每种方法)都会返回时间,源IP,标题和正文(基本上它会返回所有内容)。无论如何解析这个的身体?我不想通过返回的字符串,并告诉它寻找文本“开始邮政正文”,我想要一个自然的方法来做到这一点。这是否存在?
TLDR:我只希望它返回后身体
这里有什么是我的代码:
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
public static void main(String[] args) throws ClientProtocolException, IOException{
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://www.posttestserver.com/data/2013/04/16/01.41.38521171013");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println(EntityUtils.toString(entity));
}
和这里的返回什么:
Time: Tue, 16 Apr 13 01:41:38 -0700
Source ip: 155.198.108.247
Headers (Some may be inserted by server)
UNIQUE_ID = UW0OwtBx6hIAACfjfl4AAAAA
CONTENT_LENGTH = 7627
CONTENT_TYPE = application/json
HTTP_HOST = posttestserver.com
HTTP_CONNECTION = close
HTTP_USER_AGENT = Apache-HttpClient/4.2.4 (java 1.5)
REMOTE_ADDR = 155.198.108.247
REMOTE_PORT = 54779
GATEWAY_INTERFACE = CGI/1.1
REQUEST_METHOD = POST
QUERY_STRING =
REQUEST_URI = /post.php
REQUEST_TIME = 1366101698
No Post Params.
== Begin post body ==
{"Recent Cases":[{"descript..etc etc"}]}
== End post body ==
任何想法?
感谢您的快速反应,但你的方法产生完全相同的输出为矿(您buffer.toString()产生同我EntityUtils.toString(实体))。 = S。任何其他建议? –
啊,我看到这也是浏览器中出现的url的响应,所以它不是整个页面的实际标题!该响应是无效的JSON。如果他们没有一个安宁的网址,那么你解析出的只是产生JSON,你可能会被搞砸,并且必须对String进行解析(这太可怕了)。 – david99world
我将上传更改为JSON并具有相同的错误,这意味着可能会进行字符串解析。啊。真的希望有一个更优雅的解决方案。无论如何感谢d99w。 –