【JAVA+Geoserver】使用Geoserver的REST API发布样式,文本丢失问题,已解决

文章目录

    • 问题描述
    • 原因分析
      • 在geoserver检查sld文本
      • 推测一、是否是geoserver-manager的API优化sld文本,导致文本内容丢失
        • 结论:geoserver-manager并没有优化文本
      • 推测二、API接口本身就有问题
        • 结论:可以确定是geoserver的内部出现问题
    • 解决方法
    • 在代码中如何解决?

解决方法直接从目录跳到最后

问题描述

使用geoserver-manager的工具在发布(创建和修改)样式时,发布的文本和传输的sld文本不一致。导致效果会变成下面这样:

image-20230830144646089

image-20230830144622507

原因分析

在geoserver检查sld文本

上面是我传输的文本

image-20230830144745415

下面是实际的效果

image-20230830144802230

经过比对,不仅xml的标签被改动,fill的属性内容也丢失了,发生了严重的bug

推测一、是否是geoserver-manager的API优化sld文本,导致文本内容丢失

第一时间就想到,可能是某种优化器将标签进行了替换和删减。直接拔源码查看

  1. Debug 到下面的位置进行检查

image-20230830145510584

image-20230830145423394

  1. 检查请求体中的数据是否被“篡改”
    • 到这里可以发现我们传入的sld文本被转成二进制了
    • idea支持以文本显示的形式展示,进入查看如下,可以确定的是,文本在发送前就是没有问题的

image-20230830145701620

结论:geoserver-manager并没有优化文本

推测二、API接口本身就有问题

测试方法,使用apifox或者postman去发布样式,配置如下

image-20230830150014572

请求头直接从工具内复制出来就行

image-20230830150429428

测试结果:效果和使用geoserver-manager结果一样,文本都是丢失的

结论:可以确定是geoserver的内部出现问题

解决方法

推荐阅读原文,搜了好久终于找到的关键所在 http://t.csdn.cn/DwY2z

总结原因,就是这个更新样式的接口,在后续的geoserver的版本更新中,新增了一个叫raw的参数,如果传入为false就不会覆盖原文。而恰恰官方给设置的值就是false。

验证:在apifox里添加这个参数raw=true,再请求这个接口

image-20230830150453097

查看效果

image-20230830150530674

问题解决。

在代码中如何解决?

安装原文的方法是要求自定义一个请求。自己在尝试重写的过程中发现了一个很眼熟的参数如下:

image-20230830154550894

不难发现,其实最新版的工具已经加入了该参数,尝试修改一下自己的发布样式方法:

加了以下两个参数

image-20230830154648043

就可以解决问题了

如果没有参数,就把geoserver-manager升级到1.70即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/91046.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zookeeper的使用

一、Zookeeper简介 分布式协调框架,小型的树形结构数据共享储存系统。 zookeeper的应用场景 集群管理 注册中心 配置中心 发布者将数据发布到ZooKeeper一系列节点上面,订阅者进行数据订阅,当数据有变化时,可及时得到数据的变…

SQLServer2008数据库还原失败 恢复失败

源地址:http://www.taodudu.cc/news/show-1609349.html?actiononClick 还原数据库问题解决方案 在还原数据库“Dsideal_school_db”时,有时会遇见上图中的问题“因为数据库正在使用,所以无法获得对数据库的独占访问权”,此时我们…

IDEA对Web和Tomcat的一些配置

这里只是做了自己学习中的一点记录,仅供参考哈! 配置Tomcat Modules新增Web 新增module后新增Artifacts 新增Artifacts后Tomcat新增布署 将指定的module由普通java项目变成web项目 直接创建布署到Tomcat时所需要的Aritifacts包 配置Servlet的依赖包 配置…

互联网医院|互联网医院系统开发

在数字化时代的浪潮中,互联网医院系统凭借其突出的系统特色、卓越的功能和方便的使用,正在引领着医疗行业的革新与进步。如今,我们将为您全方位地介绍这一医疗领域的创新力量。 1、系统特色:真实还原、医疗无限 互联网医院系统以…

uniapp 微信小程序 锚点跳转

uniapp文档 以下是我遇到的业务场景,是点击商品分类的某一类 然后页面滚动至目标分类, 首先第一步是设置锚点跳转的目的地,在目标的dom上面添加id属性 然后给每个分类每一项添加点击事件,分类这里的item数据里面有一字段是和上…

2023年全方位SaaS平台测评!SaaS平台应该怎么选择?

什么是SaaS平台?SaaS平台的优势在哪?怎么样选择SaaS平台?作为两个在SaaS平台领域做的非常优秀的资深平台,简道云和salesforce究竟能更胜一筹?本篇,我将带领大家深入测评这两款SaaS平台,话不多说…

【Linux】线程安全-互斥同步

文章目录 线程安全问题的引入线程互斥互斥概念互斥锁互斥锁的计数器当中如何保证原子性互斥锁基础API初始化互斥锁变量函数动态初始化静态初始化 加锁函数阻塞加锁非阻塞加锁带有超时时间的加锁 解锁函数销毁互斥锁函数 线程同步线程同步的必要性条件变量条件变量的使用原理条件…

为了他的鸟,做件很叛逆很酷的事儿

有种鸟儿,叫隐鹮(Geronticus eremita),大小如鹅,头部光秃,嘴巴巨大,一个字,丑。可是,它还有一个特点,面临濒危。 为了能在欧洲冬季存活,这种鸟儿需…

深度学习8:详解生成对抗网络原理

目录 大纲 生成随机变量 可以伪随机生成均匀随机变量 随机变量表示为操作或过程的结果 逆变换方法 生成模型 我们试图生成非常复杂的随机变量…… …所以让我们使用神经网络的变换方法作为函数! 生成匹配网络 培养生成模型 比较基于样本的两个概率分布 …

CSS Flex布局

前言 Flex布局(弹性盒子布局) 是一种用于在容器中进行灵活和自适应布局的CSS布局模型。通过使用Flex布局,可以更方便地实现各种不同尺寸和比例的布局,使元素在容器内自动调整空间分配。 目录 容器属性 🍁display属性 &…

Unity 从2018升级为2021之后 IAP(内购插件)报错解决

从老项目升级为2021高版本之后报了个错 大概就是… the type iwindowsiap exists in both unityengine.purchasing.winrtcore, version0.0.0.0, 这种 具体的我也没粘贴全部过来 原因貌似是 PackManger里面的IPA包和项目自带的冲突了 解决方法: 删除项目文件夹下面…

【LeetCode-中等题】437. 路径总和 III

文章目录 题目方法一:迭代层序 每层节点dfs 维护一个count变量 题目 方法一:迭代层序 每层节点dfs 维护一个count变量 思路: 层序遍历每一个节点遍历一个节点就对这个节点进行dfsdfs的同时,维护一个count变量,并且…