简体   繁体   English

如何仅从HttpEntity Java获取Json内容

[英]How to get only Json content from HttpEntity Java

Using HttpEntity I am getting a very long text which has special characters as well along with Json. 使用HttpEntity我得到了一个很长的文本,它与Json一起也带有特殊字符。

I tried regex but it's not working as it is almost 30000 of characters. 我尝试了正则表达式,但由于将近30000个字符而无法正常工作。

Is there a way that i can only get Json data from the HttpEntity. 有没有一种方法,我只能从HttpEntity获取Json数据。 Even string split did not work since it has so many of special characters. 甚至字符串拆分也不起作用,因为它具有许多特殊字符。

public JSONObject sendGet(String URL, String userName, String password) throws Exception {
    getRequest = new HttpGet(URL);
    getRequest.addHeader("User-Agent", USER_AGENT);
    CredentialsProvider provider = new BasicCredentialsProvider();
    UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(userName, password);
    provider.setCredentials(AuthScope.ANY, credentials);
    client = HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build();
    response = client.execute(getRequest);
    HttpEntity entity = response.getEntity();
    outputFile = new File(directoryPath + "/target/response.txt");
    fos = new FileOutputStream(outputFile);
    headers = response.getAllHeaders();
    bw = new BufferedWriter(new OutputStreamWriter(fos));
    for (Header header: headers) {
        bw.write(header.getName() + ": " + header.getValue() + "\n");
    }
    bw.write(response.getEntity());
    bw.write("Response Code : " + response.getStatusLine());
    String content = EntityUtils.toString(entity); //When i print content it has string other than json as well
    JSONObject obj = new JSONObject(content); //Here i receive A JSONObject text must begin with '{' at 1 [character 2 line 1]
    JSONArray keys = obj.names();
    Object test = JSON.parse(content);
    jsonFiles = new File(directoryPath + "/JsonFiles/test.json");
    fos = new FileOutputStream(jsonFiles);
    bw = new BufferedWriter(new OutputStreamWriter(fos));
    bw.write(content);
    bw.close();
    return obj;
}

Try adding the following Headers : 尝试添加以下Headers

getRequest.addHeader("Accept", "application/json");
getRequest.addHeader("Content-Type", "application/json");
getRequest.addHeader("Accept-Charset", "utf-8");

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

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