首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpClient的HttpResponse返回非格式化字符串

HttpClient的HttpResponse返回非格式化字符串
EN

Stack Overflow用户
提问于 2020-08-06 03:21:46
回答 1查看 38关注 0票数 0

我已经创建了一个post请求,该请求使用HttpClient执行。这将返回一个响应,从中检索实体,并将其转换为字符串以读取响应值。响应包含正确的数据,但它会丢失所有相关的XML标记,并且只包含数据。但是,当我通过CURL或Postman发出这个post请求时,响应包含XML标记。我不知道我做错了什么。这是我尝试过的:

代码语言:javascript
复制
// Create HTTP Post Request
HttpPost requestPost = new HttpPost(url);
// Create Auth
String auth = username + ":" + password;
byte[] encodedAuth = Base64.encodeBase64(auth.getBytes());
String authHeader = "Basic " + new String(encodedAuth);
requestPost.setHeader(HttpHeaders.AUTHORIZATION, authHeader);
requestPost.setHeader("Content-Type", "application/x-www-form-urlencoded");

// Create the request parameter body
List<BasicNameValuePair> urlParameters = new ArrayList<>();
urlParameters.add(new BasicNameValuePair("functionName", functionName));
urlParameters.add(new BasicNameValuePair("objectType", objectType));
urlParameters.add(new BasicNameValuePair("inputParameter", inputParameter));
urlParameters.add(new BasicNameValuePair("inputTableParameter", inputTableParameter));

// Execute request
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(urlParameters);
requestPost.setEntity(entity);

// bypass SSL security
SSLContext context = SSLContext.getInstance("TLSv1.2");
TrustManager[] trustManager = new TrustManager[] {
        new X509TrustManager() {
            @Override
            public X509Certificate[] getAcceptedIssuers() {
                return new X509Certificate[0];
            }
            @Override
            public void checkClientTrusted(X509Certificate[] certificate, String str) {}
            @Override
            public void checkServerTrusted(X509Certificate[] certificate, String str) {}
        }
};
context.init(null, trustManager, new SecureRandom());
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(context,
            SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

HttpClient client = HttpClientBuilder.create().setSSLSocketFactory(socketFactory).build();
HttpResponse response = client.execute(requestPost);

//Get response
String result = EntityUtils.toString(response.getEntity(), "UTF-8");
return result;

在不发布所有结果的情况下,我的最终结果如下所示: results 002020-07-31100In Process2020-07-312020-07-312020-07-3100002210000825255003Calculated00002210000825255EUREuro0012020-07-3100:00:00 ...等

但在postman或CURL中,它使用XML标记进行了很好的格式化:

代码语言:javascript
复制
<OUTPUT>
    <EN_ERROR_CD>00</EN_ERROR_CD>
    <ES_APPLICATION>
        <EFFECTIVE_DT>2020-07-31</EFFECTIVE_DT>
        <JOURNALSTAT_CD>100</JOURNALSTAT_CD>
        <JOURNALSTAT_TT>In Process</JOURNALSTAT_TT>
        <APPL_DT>2020-07-31</APPL_DT>
        <APPLIN_DT>2020-07-31</APPLIN_DT>
        <MOD_DT>2020-07-31</MOD_DT>
        <POLICYNR_TT>00002210000825255</POLICYNR_TT>
        <BIZPROCSTAT_CD>003</BIZPROCSTAT_CD>
        <BIZPROCSTAT_TT>Calculated</BIZPROCSTAT_TT>
    </ES_APPLICATION>
    <ES_POLICY>
        <POLICYNR_TT>00002210000825255</POLICYNR_TT>
        <POLICYNROLD_TT></POLICYNROLD_TT>
        <EXCHANGERATE_TP></EXCHANGERATE_TP>
        <CURRENCY_ID>EUR</CURRENCY_ID>
        <CURRENCY_TT>Euro</CURRENCY_TT>
        <SALECH_CD>001</SALECH_CD>
        <POLBEG_DT>2020-07-31</POLBEG_DT>
        <STARTTIME_TM>00:00:00</STARTTIME_TM>
...etc

作为参考,我的CURL请求是这样的:

代码语言:javascript
复制
curl -u username:password -d "functionName=/RETRIEVE&objectType=obj&inputParameter=<INPUT><IV_APPLNR_CD>10000000002553402</IV_APPLNR_CD><IS_REQUESTED_ELEMENTS></IS_REQUESTED_ELEMENTS><IF_READ_JOURNAL></IF_READ_JOURNAL><IF_READ_CBC>X</IF_READ_CBC></INPUT>&inputTableParameter=" -H "Content-Type: application/x-www-form-urlencoded" -X POST https://hostname:port/test/service/service.do

我希望这些信息对说明这个问题有帮助。非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2020-08-06 21:59:04

可以通过在创建post请求时添加以下行来解决此问题:

代码语言:javascript
复制
requestPost.setHeader(HttpHeaders.ACCEPT_CHARSET, "true");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63272185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档