Précautions lorsque java httpResponse appelle la méthode getEntity ()

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);
			}
		}

Je suppose que tu aimes

Origine blog.csdn.net/wujian_csdn_csdn/article/details/107867845
conseillé
Classement