Le projet doit appeler une interface externe et l'interface renvoie l'objet HttpResponse. Lors de la récupération du contenu dans la valeur de retour, un problème très caché a été commis! httpResponse.getEntity () ne peut pas être appelé plusieurs fois, il ne peut être appelé qu'une seule fois pour l'obtenir. Enregistrez-le en tant que variable temporaire pour le recevoir. Utilisez cette variable temporaire pour la logique ultérieure. Si vous n'utilisez pas de variable pour le recevoir , retirez-le la deuxième fois que vous l'appelez. L'objet de est nul, ce qui entraîne une exception de pointeur nul lors du traitement suivant!
Exemples d'erreurs:
//注意这个地方取了一次
log.info("responseStri:"+EntityUtils.toString(httpResponse.getEntity()));
//报空指针异常!坑就在这个地方,又获取的一次,httpResponse.getEntity()获取就是null,
String responseStr = (httpResponse.getEntity()).toString();
Exemple réussi:
..............
..............
HttpResponse httpResponse = HttpRequestUtils.post(esbUrl,jsonParam,headerParam,httpParams);
//post请求返回结果
JSONObject jsonResult = null;
//请求发送成功,并得到响应
if (httpResponse.getStatusLine().getStatusCode() == 200) {
String str = "";
try {
//读取服务器返回过来的json字符串数据
str = EntityUtils.toString(httpResponse.getEntity());
//把json字符串转换成json对象
jsonResult = JSONObject.parseObject(str);
} catch (Exception e) {
log.error("post request submit error:" + esbUrl, e);
}
}else{
try {
String responseStr = (EntityUtils.toString(httpResponse.getEntity()));
log.info("post request error:"+responseStr);
jsonResult = JSONObject.parseObject(responseStr);
log.info("FFFFFF:"+jsonResult.toString());
} catch (Exception e) {
log.error("post request submit error exception:" + esbUrl, e);
}
}