请帮忙看下这句话怎么就会引发空指针问题了?

新手上路,请多包涵

问题描述

fortify 工具扫描提示
图片描述

问题出现的环境背景及自己尝试过哪些方法

代码由客户总部使用fortify工具扫描,扫描策略不详。

相关代码

    public static String simpleHttpMapRequest(String location, Map requestMap) {
        String resultString = "";

        SslContextFactory sslContextFactory = new SslContextFactory();
        HttpClient httpClient = new HttpClient(sslContextFactory);

        try {
            httpClient.start();
            Request request = httpClient.POST(location);
            if (requestMap != null) for (Object entryObj : requestMap.entrySet()) {
                Map.Entry requestEntry = (Map.Entry) entryObj;
                if(requestEntry!=null){
                    request.param(requestEntry.getKey() != null ? requestEntry.getKey().toString() : null,requestEntry.getValue() != null ? requestEntry.getValue().toString() : null);
                }
            }
            ContentResponse response = request.send();
            resultString = StringUtilities.toStringCleanBom(response.getContent());
        } catch (Exception e) {
            throw new BaseException("Error in http client request", e);
        } finally {
            try {
                httpClient.stop();
            } catch (Exception e) {
                logger.error("Error stopping http client", e);
            }
        }
        return resultString;
    }

你期待的结果是什么?实际看到的错误信息又是什么?

request.param(requestEntry.getKey() != null ? requestEntry.getKey().toString() : null,requestEntry.getValue() != null ? requestEntry.getValue().toString() : null);

自己结合上下文反复查看后觉得没有问题,请各位帮忙看看

阅读 2.3k
3 个回答

最后那里如果真的啥都没有,就会形成这个结果:
request.param(null);

entryObj如果为null的话强转为Map.Entry的时候会NPE


上面随口回答的,未看源码(捂脸),如果真的没什么错误的,那就属于误报啊,这个很正常,代码检查工具又不能保证百分百的检查正确,很多复杂的上下文引用,工具是不知道的,idea有时候也会误报的

request 不可能为 null 吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题